docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker部署Nginx挂载目录

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

作者:小龙在山东

这篇文章主要为大家详细介绍了使用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

创建容器

% 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挂载目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文