拉取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挂载目录内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论