docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker运行nginx挂载数据卷

docker运行nginx容器并挂载数据卷

作者:会飞的爱迪生

本文主要介绍了docker运行nginx容器,并通过挂载目录将容器与宿主机的数据进行共享和统一管理,具有一定的参考价值,感兴趣的可以了解一下

容器数据卷(docker持久化):

类似挂载或共享存储的功能,将容器的目录映射到宿主机目录上,使之数据共享并实现统一管理。防止容器被删除数据丢失。

挂载目录注意事项:

如果直接启动nginx容器并指定挂在目录,会出现将容器中的目录清空的现象,所以需要先确认容器中nginx的目录结构,然后将容器中nginx的相关目录或文件拷贝下来再启动容器。

通过-v指定挂载目录时会以宿主机的目录为标准,如果宿主机的目录为空那么启动容器后容器的目录也是空的。

1、先启动一个nginx容器并查看nginx的相关目录和文件

(1) 启动nginx容器  

# docker container run -d --name="testnginx" nginx:latest

(2) 查看nginx相关目录和文件

# docker container exec testnginx  ls /etc/nginx/nginx.conf   # 主配置文件路径
/etc/nginx/nginx.conf

# docker container exec testnginx  ls /etc/nginx/conf.d       # 默认配置文件路径
default.conf

# docker container exec testnginx  ls /usr/share/nginx/html   # 站点目录文件路径
50x.html
index.html

# docker container exec testnginx  ls /var/log/nginx          # 日志文件路径
access.log
error.log

2、宿主机创建数据卷,并将容器中的文件或目录拷贝到数据卷

(1) 创建主配置文件路径并拷贝配置文件到宿主机

# mkdir /data/nginx/conf -p     # 主配置文件路径
# docker container cp testnginx:/etc/nginx/nginx.conf /data/nginx/conf/

(2) 将容器中的conf.d目录拷贝到宿主机中

# docker container cp  testnginx:/etc/nginx/conf.d /data/nginx/

(3) 将容器中站点目录拷贝到宿主机

# docker container cp  testnginx:/usr/share/nginx/html  /data/nginx/

(4) 创建日志路径(日志文件就不需要拷贝了)

# mkdir /data/nginx/logs

3、运行nginx容器

挂载文件时,必须是一个存在的文件或目录,比如nginx.conf,如果修改宿主机的nginx.conf,需要重启容器才生效
# docker container run -d --restart=always -p 8000:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx --name="nginx01" nginx:latest

--------------------------------
docker container run -d   # 后台运行nginx
-p 8000:80                # 端口映射
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf    # 映射nginx.conf配置文件,如果不指定宿主机挂载目录docker会自动创建一个通过docker inspect查看
-v /data/nginx/conf.d:/etc/nginx/conf.d                 # 映射conf.d目录
-v /data/nginx/html:/usr/share/nginx/html               # 映射html目录
-v /data/nginx/logs:/var/log/nginx                      # 映射日志目录    

4、修改数据卷中的内容

# cd /data/nginx/html/
# echo "hello nginx" > index.html

[root@docker-106 nginx]# cat /data/nginx/conf.d/test.conf 
server {
    listen       80;
    server_name  www.test.com;
    access_log  /var/log/nginx/host.access.log  main;
    
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
}

5、重启容器并访问nginx服务

# docker container restart nginx01
# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
acf1b99cdabc        nginx:latest        "/docker-entrypoin..."   16 minutes ago      Up 4 seconds        0.0.0.0:8000->80/tcp   nginx01

# curl 192.168.1.106:8000
hello nginx        

到此这篇关于docker运行nginx容器并挂载数据卷的文章就介绍到这了,更多相关docker运行nginx挂载数据卷内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

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