繁体   English   中英

在文件中删除卷引用后,停止 docker compose 卷安装在容器中

[英]Stop docker compose volume from mounting in container after volume reference removed in file

我目前正在使用 docker compose 文件运行自定义构建的 docker 容器。 docker compose 文件如下所示:

version: '2'
services:
  ubuntu:
    privileged: true
    image: custom_docker_image:17
    container_name: custom_docker_container
    command: '/usr/bin/supervisord'
    volumes:
       - /custom_docker_path/public:/public
       - /custom_docker_path/data/logs:/data/logs
       - /custom_docker_path/var/log:/var/log
       - /custom_docker_path/etc/nginx:/etc/nginx
       - /custom_docker_path/etc/supervisor:/etc/supervisor
       - /etc/letsencrypt:/etc/letsencrypt
    ports:
       - '9202:9200'

docker 容器运行服务和进程,这些服务和进程使用主管保持活动状态。 一切都按预期运行,直到我更改了卷安装。

该文件以前用于具有如下卷:

version: '2'
services:
  ubuntu:
    privileged: true
    image: custom_docker_image:17
    container_name: custom_docker_container
    command: '/usr/bin/supervisord'
    volumes:
       - /custom_docker_path/public/db:/public/db
       - /custom_docker_path/public/settings:/public/settings
       - /custom_docker_path/data/logs:/data/logs
       - /custom_docker_path/var/log:/var/log
       - /custom_docker_path/etc/nginx:/etc/nginx
       - /custom_docker_path/etc/supervisor:/etc/supervisor
       - /etc/letsencrypt:/etc/letsencrypt
    ports:
       - '9202:9200'

以前,只有容器中公共目录中的 db 和 settings 文件夹与主机共享。 然后我决定与主机共享整个公共目录。

共享成功,除了dbsettings文件夹仍然与整个公共目录一起共享。

在容器内运行mount命令显示以下内容:

/dev/mapper/host_machine_mount root on /public type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /data/logs type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /public/db type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /public/settings type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /etc/supervisor type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /etc/letsencrypt type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /var/log type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/host_machine_mount root on /etc/nginx type ext4 (rw,relatime,errors=remount-ro,data=ordered)

从上面可以看出, /public被挂载, /public/db/public/settings也是如此,即使它们在新的 docker-compose 文件中没有被引用。

我提升了容器中的权限,以便在容器启动后手动删除挂载,这有效 - 但我无法继续进入容器并删除两个挂载点。

我还尝试删除 docker 和 pruning 之外的卷,但是这两个目录在启动时仍然挂载在容器内。

尝试运行:

docker-compose down -v

docker volume rm "volume_name"

docker volume prune

在容器运行、停止以及重新启动之前和之后尝试了上述命令。

如何阻止这两个目录安装在容器内?

尝试使用docker-compose down -v删除在 docker-compose.yml 中声明的所有容器和卷

https://docs.docker.com/compose/reference/down/

-v, --volumes 删除在 Compose 文件的volumes部分中声明的命名卷和附加到容器的匿名卷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM