【发布时间】:2021-09-27 01:32:43
【问题描述】:
我目前正在使用 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 文件夹与主机共享。然后我决定与主机共享整个公共目录。
共享成功,除了 db 和 settings 文件夹仍与整个公共目录一起共享。
在容器内运行 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 外部的卷并进行修剪,但两个目录在启动时仍安装在容器内。
试运行:
docker-compose down -v
docker volume rm "volume_name"
docker volume prune
在容器运行、停止以及重启前后尝试了上述命令。
如何阻止这两个目录挂载到容器内?
【问题讨论】:
标签: linux docker docker-compose mount volumes