使用Docker部署Nginx并掛載目錄詳解
拉取Nginx鏡像
獲取Nginx最新版本
% docker pull nginx Using default tag: latest latest: Pulling from library/nginx 83d624c4be2d: Pull complete 1f62b39dc401: Pull complete 6c29a458e7d5: Pull complete 805908969407: Pull complete 2c1384c86539: Pull complete b9a670e7a7f3: Pull complete 51635e63ab0c: Pull complete Digest: sha256:28402db69fec7c17e179ea87882667f1e054391138f77ffaf0c3eb388efc3ffb Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
查看安裝的鏡像列表
% docker images REPOSITORY TAG IMAGE ID CREATED SIZE myimage latest 31030096287b 34 hours ago 1.06GB nginx latest 4b196525bd3c 5 weeks ago 197MB % docker images nginx REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 4b196525bd3c 5 weeks ago 197MB
創(chuàng)建容器
% docker run --name nginx-test -p 80:80 -d nginx 8db37fde71adb65835594fa7b5314c791c6b7061454a91662cc364f836f64909 # 查看容器 % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8db37fde71ad nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp nginx-test
啟動容器后,訪問本地80端口,可以看到下面效果圖:
上面命令解釋:
命令 | 解釋 |
---|---|
docker run | 創(chuàng)建一個新容器,并運(yùn)行一個命令 |
–name | 給容器起一個名字,指的是 nginx-test |
-p | 指定宿主機(jī)與容器內(nèi)部端口的映射關(guān)系,-p [宿主機(jī)端口]:[容器內(nèi)部端口],我設(shè)置的是 80:80 |
-d | 設(shè)置容器在在后臺一直運(yùn)行 |
最后面的參數(shù)是鏡像名稱,也可以是鏡像ID。
啟動Nginx后,返回的字符串是鏡像nginx-test的容器ID。
更改容器配置文件
進(jìn)入容器
% docker exec -it nginx-test /bin/bash root@8db37fde71ad:/# cd /etc/nginx/ root@8db37fde71ad:/etc/nginx# ls -l total 32 drwxr-xr-x 1 root root 4096 Nov 9 14:23 conf.d -rw-r--r-- 1 root root 1007 Oct 2 15:13 fastcgi_params -rw-r--r-- 1 root root 5349 Oct 2 15:13 mime.types lrwxrwxrwx 1 root root 22 Oct 2 15:59 modules -> /usr/lib/nginx/modules -rw-r--r-- 1 root root 648 Oct 2 15:59 nginx.conf -rw-r--r-- 1 root root 636 Oct 2 15:13 scgi_params -rw-r--r-- 1 root root 664 Oct 2 15:13 uwsgi_params
命令 | 解釋 |
---|---|
docker exec | 在運(yùn)行的容器中執(zhí)行命令。 |
-it | -i和-t兩個參數(shù)配合使用,開啟一個交互模式的終端。 |
nginx-test | 容器名稱,也可以是容器ID:8db37fde71ad。 |
/bin/bash | 指定了執(zhí)行命令的shell。 |
根目錄和日期目錄
# more conf.d/default.conf access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
查看配置文件,可以看到根目錄是/usr/share/nginx/html,日志目錄是/var/log/nginx/。
為了避免每次修改html代碼或者查看日志都要進(jìn)入容器內(nèi),我們可以把容器動態(tài)更新的目錄放在宿主機(jī)目錄下,通過掛載的方式簡化操作流程。
掛載
拷貝配置文件
從容器里拷貝配置文件到宿主機(jī)。
mkdir nginx % docker cp nginx-test:/etc/nginx/nginx.conf ./nginx mkdir conf.d % docker cp nginx-test:/etc/nginx/conf.d/default.conf ./nginx/conf.d/
移除
之后我們關(guān)閉并移除掉原來的nginx容器。
% docker stop nginx-test nginx-test % docker rm nginx-test nginx-test
創(chuàng)建帶掛載的容器
% docker run --name nginx-config -p 80:80 -v /nginx-test/nginx/nginx.conf:/etc/nginx/nginx.conf -v /nginx-test/nginx/logs:/var/log/nginx -v /nginx-test/html:/usr/share/nginx/html -v /nginx-test/nginx/conf.d:/etc/nginx/conf.d --privileged=true -d nginx 99541c70fe7871061c514a999e7b7335ead568ec5308253991a0993aac9c1d09 % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 99541c70fe78 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp nginx-config
-v 用來掛載目錄,--privileged=true讓容器擁有權(quán)限。
需要注意的是,這里的掛載目錄必須是絕對路徑,不能是相對路徑。
現(xiàn)在宿主機(jī)/nginx-test/html下新建一個index.html就可以訪問了:
到此這篇關(guān)于使用Docker部署Nginx并掛載目錄詳解的文章就介紹到這了,更多相關(guān)Docker部署Nginx掛載目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker Compose搭建 Confluence的教程
本文將介紹如何使用 Docker Compose 快速搭建 Confluence 、以及如何和 Traefik 一同使用,如果你看過之前的內(nèi)容,跟隨本文應(yīng)該能在十分鐘內(nèi)解決戰(zhàn)斗,感興趣的朋友快來看看吧2021-06-06基于Docker+Jenkins實(shí)現(xiàn)自動化部署的方法
這篇文章主要介紹了基于Docker+Jenkins實(shí)現(xiàn)自動化部署,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07解決Docker Desktop運(yùn)行一直轉(zhuǎn)問題
遇到Docker啟動報(bào)錯、Docker Desktop運(yùn)行不正常等問題,常見解決方案包括以管理員身份運(yùn)行CMD,重啟Docker服務(wù),恢復(fù)Docker Desktop出廠設(shè)置,啟用Windows功能等,最終通過運(yùn)行cmd命令"netsh winsock reset"解決問題,但需注意此操作可能導(dǎo)致Docker鏡像丟失2024-09-09Docker可視化面板Portainer的實(shí)現(xiàn)
Portainer是一個免費(fèi)的容器管理工具,支持Docker環(huán)境的可視化管理,通過Portainer,用戶可以輕松地在Windows或Linux容器中部署服務(wù),大大簡化了Docker容器的管理工作,感興趣的可以了解一下2024-11-11Docker一鍵部署springcloud項(xiàng)目的方法
本文主要介紹了Docker一鍵部署springcloud項(xiàng)目的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12