1、獲取nginx版本
docker中nginx版本信息:https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated
2、拉取nginx
docker pull nginx:1.16.1
nginx后面的:1.16.1表示具體版本,如果不指定,則默認拉取最新的latest
顯示如下圖,則表示安裝成功
3、啟動nginx
3.1查看nginx信息
3.2 錯誤啟動示范:docker run --name nginx -d nginx -p 80:80
執行結果如下:
可以看出,docker重新拉區了最新的latest版本的nginx
通過docker ps查看發現並沒有運行中的容器
通過docker ps -a 查看發現已經創建的容器
由上可見,如果直接-d nginx,會從倉庫中拉取最新版本的nginx鏡像,並創建容器,但這不是我們想要的,這時候我們需要把latest的nginx刪除掉,刪除前需要先把容器刪除,否則會提示以下內容
(注:操作鏡像或者容器,可以只寫id的保證不重復的前幾位)
3.3 刪除nginx鏡像和容器
3.4 正確啟動nginx
docker run --name nginx -p 80:80 -d dfcfd8e9a5d3
參數說明:
docker run : 啟動容器
--name nginx:指定容器啟動后名稱,注意是兩個-
-p 80:80:將容器的80端口(冒號后面)映射到宿主機的80端口(冒號前面)上,容器相當於一個簡化版的服務器,所以需要映射才能被訪問
-d dfcfd8e9a5d3: 指定后台啟動,並指定后台啟動的鏡像名稱(建議指定,也有教程說可以不指定的,沒有試驗)
3.5 修改配置文件
3.5.1 直接修改配置
進入容器:docker exec -it 3a bash
nginx路徑在/etc/nginx下
編輯nginx.conf,提示 bash: vim: command not found ,因為nginx這個容器沒有安裝編輯器,所以先安裝 apt-get update 之后 apt-get install vim
編輯nginx.conf,退出容器,然后重啟系統,則可以查看結果。
3.5.2 掛載文件
在宿主機上新建文件夾 mkdir nginx,在文件夾下新建logs路徑,mkdir logs ,將事先准備好的nginx.conf復制到nginx路徑下,結果如下如所示:
掛載文件
docker run --name nginx2 -p 90:90 -v /mnt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/docker/nginx/logs:/var/log/nginx -d dfcfd8e9a5d3
參數說明:
--name nginx2: 啟動容器的名稱,用於關閉或者啟動,docker stop nginx1/docker start nginx1
-p 90:90 : 將容器的90端口映射到宿主機的90端口上
-v /mnt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf :將宿主機上的/mnt/docker/nginx/nginx.conf覆蓋容器里的/etc/nginx/nginx.conf,這樣宿主機上的nginx就會以本地的nginx為配置文件
-v /mnt/docker/nginx/logs:/var/log/nginx :將容器的日志目錄/var/log/nginx修改為宿主機的/mnt/docker/nginx/logs,這樣日志就會往宿主機的/mnt/docker/nginx/logs下輸出access.log和error.log
3.6 修改nginx訪問宿主機文件
將文件放到/mnt/docker/test中,將nginx.conf修改root路徑為/mnt/docker/test,啟動容器
docker run --name nginx2 -p 90:90 -v /mnt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/docker/nginx/logs:/var/log/nginx -v /mnt/docker/test:/mnt/docker/test -d dfcfd8e9a5d3
這樣就相當於將本地的文件映射到了容器里,nginx訪問容器上的路徑時就訪問到了宿主機上。
4、配置proxy_pass
先安裝必要的工具
apt-get update
apt-get install -y curl telnet
查看容器ip
docker inspect 38914185adb1(容器id)
由圖可以看出容器的ip是172.17.0.2,宿主機的ip是172.17.0.1,所以配置tomcatip的時候配置宿主機或者其他容器的ip即可