使用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
啟動(dòng)容器后,訪問本地80端口,可以看到下面效果圖:

上面命令解釋:
| 命令 | 解釋 |
|---|---|
| docker run | 創(chuàng)建一個(gè)新容器,并運(yùn)行一個(gè)命令 |
| –name | 給容器起一個(gè)名字,指的是 nginx-test |
| -p | 指定宿主機(jī)與容器內(nèi)部端口的映射關(guān)系,-p [宿主機(jī)端口]:[容器內(nèi)部端口],我設(shè)置的是 80:80 |
| -d | 設(shè)置容器在在后臺一直運(yùn)行 |
最后面的參數(shù)是鏡像名稱,也可以是鏡像ID。
啟動(dòng)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兩個(gè)參數(shù)配合使用,開啟一個(gè)交互模式的終端。 |
| 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),我們可以把容器動(dòng)態(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下新建一個(gè)index.html就可以訪問了:

到此這篇關(guān)于使用Docker部署Nginx并掛載目錄詳解的文章就介紹到這了,更多相關(guān)Docker部署Nginx掛載目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker 部署Go的兩種基礎(chǔ)鏡像的實(shí)現(xiàn)
這篇文章主要介紹了Docker 部署Go的兩種基礎(chǔ)鏡像的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
docker靈活的構(gòu)建PHP環(huán)境的實(shí)現(xiàn)
這篇文章主要介紹了docker靈活的構(gòu)建PHP環(huán)境的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Docker File創(chuàng)建鏡像失敗ERROR [3/4] RUN yum&nbs
文章描述了在使用DockerFile創(chuàng)建基于CentOS Linux 8的鏡像時(shí)遇到的問題,即無法下載vim軟件包的元數(shù)據(jù),問題的原因是CentOS Linux 8的AppStream倉庫沒有可用的URL,為了解決這個(gè)問題,作者建議將CentOS版本修改為7,因?yàn)镃entOS Linux 7的AppStream倉庫通常有可用的URL2024-11-11
docker如何在一個(gè)容器內(nèi)部署多個(gè)服務(wù)
這篇文章主要介紹了docker如何在一個(gè)容器內(nèi)部署多個(gè)服務(wù),思路是這樣的首先拿到你的httpd,以及你的springBoot,合并他們的Dockerfile,然后打包,然后啟動(dòng)的時(shí)候啟動(dòng)多個(gè)端口(httpd的端口和你服務(wù)的端口),需要的朋友可以參考下2024-01-01

