Docker挂载容器卷方式

什么是容器卷?

卷就是目录或文件,存在于多个Docker容器中,卷的设计目的就是数据的持久化,完全独立于容器的生命周期,因此docker不会再容器删除时删除其挂载的数据卷。

为什么要挂载容器卷?

  1. 容器在运行过程中会产生数据,如果将容器删除,那么会将挂载的数据删掉。
  2. 容器中的配置需要修改的时候,无需进入容器,在容器外就可以修改。

Docker命令挂载容器卷

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

挂载单个文件

docker run -d --name 容器名 --restart = always -v 外部文件路径/外部文件名:容器文件路径/容器文件名

挂载文件夹

docker run -d --name 容器名 --restart = always -v 外部文件夹路径/外部文件夹名:容器文件夹路径/容器文件夹名

实战1,docker部署nginx,挂载nginx的内置文件

1. 搜索下载镜像

# 搜索镜像
docker search nginx
# 下载镜像
docker pull nginx
# 查看镜像
docker images

2. 启动nginx,容器名为mynginx

docker run -d --name mynginx -p 3500:80 nginx

3. 将容器中nginx的文件复制到外部文件夹/home/nginx-conf

docker cp mynginx:/etc/nginx/nginx.conf /home/nginx-conf/
docker cp mynginx:/etc/nginx/conf.d/ /home/nginx-conf/conf/
docker cp mynginx:/usr/share/nginx/html/ /home/nginx-conf/html/
docker cp mynginx:/var/log/nginx/ /home/nginx-conf/logs/

4. 关闭删除容器

# 关闭容器
docker stop container_id
# 删除容器
docker rm container_id

5. 重新启动nginx容器,启动时挂载容器卷

docker run \
-v /home/nginx-conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx-conf/conf:/etc/nginx/conf.d \
-v /home/nginx-conf/html:/usr/share/nginx/html \
-v /home/nginx-conf/logs:/var/log/nginx \
-d --name mynginx -p 3500:80 nginx

疑问,外部文件变化是否会改变内部的文件

  1. 外部文件变化会改变内部的文件
  2. 外部文件如果发生变化时,容器停止,如果容器重新启动,那么数据会同步。

参考

https://blog.csdn.net/mengfanshaoxia/article/details/127173034

posted @ 2023-06-25 23:24  sunpeiyu  阅读(118)  评论(0编辑  收藏  举报