docker搭建nginx的實現(xiàn)步驟
一、安裝Docker
1、安裝:
yum install docker
2、啟動/停止/重啟docker服務(wù)
systemctl docker start systemctl docker stop systemctl docker restart #開機自啟動 systemctl enable docker
#設(shè)置容器自啟動 1.創(chuàng)建容器時設(shè)置 docker run -d --restart=always --name 設(shè)置容器名 使用的鏡像 (上面命令 --name后面兩個參數(shù)根據(jù)實際情況自行修改) # Docker 容器的重啟策略如下: --restart具體參數(shù)值詳細信息: no // 默認策略,容器退出時不重啟容器; on-failure // 在容器非正常退出時(退出狀態(tài)非0)才重新啟動容器; on-failure:3 // 在容器非正常退出時重啟容器,最多重啟3次; always // 無論退出狀態(tài)是如何,都重啟容器; unless-stopped // 在容器退出時總是重啟容器,但是不考慮在 Docker 守護進程啟動時就已經(jīng)停止了的容器。 2.修改已有容器,使用update #如果創(chuàng)建時未指定 --restart=always,可通過update 命令設(shè)置 docker update --restart=always 容器ID(或者容器名) (容器ID或者容器名根據(jù)實際情況修改)
3、查看docker版本信息
docker version
4、查看所有docker鏡像
docker images
二、安裝Nginx
1、拉取Nginx鏡像文件
docker pull [鏡像名]:[版本號] //版本號可省略,省略會下載最新版本 例如: docker pull nginx //下載最新的Nginx鏡像
2、查看下載好的鏡像文件
docker images
3、創(chuàng)建并運行Nginx容器
docker run -d --name nginx01 -p 8050:80 nginx 命令詳解: # docker run 啟動一個鏡像 # -d 表示后臺允許 # --name nginx01 表示為當前容器起一個別名 # -p 8050:80 表示將本機的8050端口映射到nginx鏡像的80端口 4、查看正在運行的容器
docker ps
5、查看Nginx是否部署成功
curl localhost:8050
1、進入Nginx容器當中
docker exec -it nginx /bin/bash 命令詳解: # docker exec 在運行的容器中執(zhí)行命令 # -i 以交互模式運行容器,通常與 -t 同時使用;例如-it # -t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;例如-it # nginx 容器名 # /bin/bash 其實就是表示載入容器后運行bash(命令語言解釋程序), 因為docker中必須要保持一個進程(運行的程序)的運行,要不然整個容器就會退出,所以說,bash就擔任起了docker中運行的那個進程的角色! #而/bin/bash則是bash在linux下的位置
2、在容器中查詢出nginx的相關(guān)配置文件存放位置
whereis nginx
3、退出容器,回到本地linux系統(tǒng)
exit
4、停止并移除Nginx容器
docker stop ff6fc #停止容器,容器id可不用寫全,只要寫到能識別到唯一一條就可以 docker rm ff6fc #移除容器 # bedfd2a72585表示容器的ID,即:CONTAINER ID
5、本地創(chuàng)建管理目錄
mkdir -p /usr/local/nginx mkdir -p /usr/local/nginx/html mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/logs
6、將容器中的相應(yīng)文件copy到剛創(chuàng)建的管理目錄中
docker cp ff6fc:/etc/nginx/nginx.conf /usr/local/nginx/ docker cp ff6fc:/etc/nginx/conf.d /usr/local/nginx/conf/ docker cp ff6fc:/usr/share/nginx/html/ /usr/local/nginx/html/ docker cp ff6fc:/var/log/nginx/ /usr/local/nginx/logs/ 注:docker cp ff6fc中的 "ff6fc" 為容器ID(docker ps可查看),也可換成容器名,例如上面容器名是nginx,可寫成 docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/ ,但是要區(qū)分唯一性
7、再次啟動容器并作目錄掛載
docker run --name nginx -p 8050:80 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/www/:/usr/share/nginx/html/ -v /usr/local/nginx/logs/:/var/log/nginx/ -v /usr/local/nginx/conf/:/etc/nginx/conf.d --privileged=true -d nginx
docker run --name nginx -p 8050:80 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/www/:/usr/share/nginx/html/ -v /usr/local/nginx/logs/:/var/log/nginx/ -v /usr/local/nginx/conf/:/etc/nginx/conf.d --privileged=true -d nginx 這里掛載的路徑和端口要明白,不然配置conf文件會亂 就是 端口:宿主機8050端口映射docker里nginx容器的80端口,所以我們訪問宿主機ip+8050端口,就會映射到docker里nginx容器里的80端口,所以nginx配置文件listen是監(jiān)聽80端口,這個千萬不要搞錯了 頁面:打包的頁面文件夾是build,宿主機頁面路徑/usr/local/nginx/www/,映射的是docker里nginx容器的/usr/share/nginx/html/路徑,所以nginx配置文件 里的location的/usr/share/nginx/html這個路徑不用調(diào)整,只需在后面加上部署的前端頁面路徑,下面就是加上了build,然后前端打包的頁面build文件夾放在宿主機的/usr/local/nginx/www/就可以了 location / { root /usr/share/nginx/html/build; try_files $uri $uri/ /index.html; index index.html index.htm; } 所以流程是這樣,我們輸入網(wǎng)址宿主機+8050端口會映射到nginx配置文件80端口,然后nginx80端口是監(jiān)聽的,于是就會走到“l(fā)ocaltion / ”這個位置,然后會定位到/usr/share/nginx/html/build這個路徑,又因為/usr/share/nginx/html/相當于宿主機/usr/local/nginx/www/,所以最終會去宿主機/usr/local/nginx/www/build找到頁面,所以我們的頁面文件夾build需要放在/usr/local/nginx/www/這里
后端服務(wù):因為現(xiàn)在nginx是部署在docker容器里,后臺服務(wù)部署在宿主機里,基于docker和宿主機通信是通過搭建新的網(wǎng)關(guān)橋docker0網(wǎng)橋,我們可以通過docker inspect nginx(容器名或容器id)看到nginx的ip是172.17.0.4
查看宿主機在docker0網(wǎng)橋下的所屬ip是172.17.0.1
宿主機的wlan(使用wifi分配的ip) ip是192.168.1.106(使用網(wǎng)線的可以查看eth0分配的ip)
基于docker和宿主機通信是通過搭建新的網(wǎng)關(guān)橋docker0網(wǎng)橋
需要注意的一點就是,即使ping通了,docker里nginx的容器最好進行telnet測試一下能否連通宿主機的后端端口
若不通,就要看看宿主機是否防火墻是否開放這個端口
所以nginx配置后端服務(wù)需要這樣配置,需要代理到docker0網(wǎng)橋分配的ip:172.17.0.1或者網(wǎng)線分配的ip或者wifi分配的ip:192.168.1.106的后臺服務(wù)
location /prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.17.0.1:8081/; #或 proxy_pass http://192.168.1.106:8081/; }
最后附上nginx配置文件
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; charset utf-8; location / { root /usr/share/nginx/html/build; try_files $uri $uri/ /index.html; index index.html index.htm; } location /prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.17.0.1:8081/; #或 proxy_pass http://192.168.1.106:8081/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
到此這篇關(guān)于docker搭建nginx的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)docker搭建nginx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker搭建 Nginx+PHP+MySQL 環(huán)境并部署WordPress實踐
- 利用docker搭建php7和nginx運行環(huán)境全過程(官方鏡像)
- 使用Docker搭建Django,Nginx,R,Python部署環(huán)境的方法
- 使用dockercompose搭建springboot-mysql-nginx應(yīng)用
- docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法
- Docker如何使用nginx搭建tomcat集群(圖文詳解)
- Docker搭建Nginx圖片服務(wù)器的方法
- 基于docker搭建nginx文件服務(wù)器的方法步驟
- docker搭建nginx實現(xiàn)負載均衡的示例代碼
相關(guān)文章
docker 啟動具有多個網(wǎng)絡(luò)接口的容器的方法示例
這篇文章主要介紹了docker 啟動具有多個網(wǎng)絡(luò)接口的容器的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10基于Docker部署GitLab環(huán)境搭建的方法步驟
這篇文章主要介紹了基于Docker部署GitLab環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-10-10Spring Cloud中使用jib進行docker部署的步驟詳解
這篇文章主要介紹了Spring Cloud中使用jib進行docker部署的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09docker容器通信參數(shù)使用及l(fā)ink參數(shù)介紹
這篇文章主要介紹了docker容器通信參數(shù)使用及l(fā)ink參數(shù)介紹,link的原理就是在/etc/hosts里面添加了一個alias的名稱,本文通過案例分析給大家詳細講解,需要的朋友可以參考下2022-09-09CentOS修改docker鏡像存儲位置并進行數(shù)據(jù)遷移的操作方法
本文詳細介紹了在CentOS上修改Docker鏡像存儲位置并進行數(shù)據(jù)遷移的步驟,包括停止Docker服務(wù)、創(chuàng)建新的存儲目錄、復(fù)制現(xiàn)有數(shù)據(jù)、修改Docker配置、重啟Docker服務(wù)、驗證配置、清理舊數(shù)據(jù)(可選)以及檢查容器和鏡像,感興趣的朋友一起看看吧2025-01-01