一位伙伴需求是把容器的目录映射到宿主机且容器目录的内容不被宿主机的空白目录覆盖。我的第一反应是-v 卷的映射,参数是对的,但是用法是错的

1、容器卷的挂载方式

  1. 容器把目录映射到宿主机
  2. 创建volume卷,然后把容器的目录和volume卷绑定
    区别:方法一宿主机目录会覆盖容器目录的内容,而方法二则不会
推荐内容

2、实现需求

2.1创建volume卷并和宿主机目录绑定

root@jumpserver-work:/app# docker volume create --driver local --opt type=none --opt device=/app --opt o=bind nginx-data
nginx-data
root@jumpserver-work:/app# docker volume ls
DRIVER    VOLUME NAME
local     c0a415b256bfa82b57e892f4ba2e3588294462951650e37a6cb3a9cc1070f4c2
local     nginx-data

2.2把volume卷挂载到容器

root@jumpserver-work:/app# docker run -d --name=nginx-test-volume -v nginx-data:/etc/nginx nginx
d79dd360acab162c6eb071e016e44a68587928a1a3cb919ccb8f8f20361fffef
root@jumpserver-work:/app# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
d79dd360acab   nginx     "/docker-entrypoint.…"   2 seconds ago   Up 2 seconds   80/tcp    nginx-test-volume
root@jumpserver-work:/app# cd /app/
root@jumpserver-work:/app# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params

3、注意

有的服务一些文件是启动才生成的,会产生一种错觉,docker -v映射容器目录到宿主机空目录后,不会覆盖容器目录的内容。直接挂载宿主机的空目录会覆盖容器原来目录的内容

在这里插入图片描述
在这里插入图片描述

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐