当前位置: 代码网 > 服务器>服务器>云虚拟主机 > 使用Docker部署Nginx并挂载目录详解

使用Docker部署Nginx并挂载目录详解

2025年04月24日 云虚拟主机 我要评论
拉取nginx镜像获取nginx最新版本% docker pull nginxusing default tag: latestlatest: pulling from library/nginx83

拉取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

创建容器

% 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创建一个新容器,并运行一个命令
–name给容器起一个名字,指的是 nginx-test
-p指定宿主机与容器内部端口的映射关系,-p [宿主机端口]:[容器内部端口],我设置的是 80:80
-d设置容器在在后台一直运行

最后面的参数是镜像名称,也可以是镜像id。

启动nginx后,返回的字符串是镜像nginx-test的容器id。

更改容器配置文件

进入容器

% 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在运行的容器中执行命令。
-it-i和-t两个参数配合使用,开启一个交互模式的终端。
nginx-test容器名称,也可以是容器id:8db37fde71ad。
/bin/bash指定了执行命令的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代码或者查看日志都要进入容器内,我们可以把容器动态更新的目录放在宿主机目录下,通过挂载的方式简化操作流程。

挂载

拷贝配置文件

从容器里拷贝配置文件到宿主机。

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/

移除

之后我们关闭并移除掉原来的nginx容器。

% docker stop nginx-test
nginx-test
% docker rm nginx-test
nginx-test

创建带挂载的容器

% 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让容器拥有权限。

需要注意的是,这里的挂载目录必须是绝对路径,不能是相对路径。

现在宿主机/nginx-test/html下新建一个index.html就可以访问了:

到此这篇关于使用docker部署nginx并挂载目录详解的文章就介绍到这了,更多相关docker部署nginx挂载目录内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com