Docker-compose 无法挂载多个命名卷

Jim*_*ter 5 docker docker-compose

我正在使用 docker-compose 在这里构建我的 jenkins 容器,但我无法将 2 个命名卷安装到 1 个容器上。这是我所拥有的:

docker-compose.yml:

version: '2'
networks:
  nw:
    driver: bridge

volumes:
  jenkins-ansible:
  jenkins-data:

services:
  jenkins:
    image: jenkins
    ports:
      - "801:8080"
    volumes:
      - jenkins-ansible:/var/lib/ansible
      - jenkins-data:/var/jenkins_home
    networks:
      - nw
Run Code Online (Sandbox Code Playgroud)

我运行docker-compose up -d并且容器启动正常,但是当我 BASH 进入容器时,df -h只显示一个挂载,/var/jenkins_home。

如果我注释掉该-jenkins-data:/var/jenkins_home行,它将安装 ansible 卷。

那么为什么它只挂载一个卷呢?我找不到任何关于只允许为每个容器安装一个卷的内容,但这就是它的外观。

jenkins-data 挂载有什么特别之处,以至于它优先于 jenkins-ansible 挂载?(我试过交换 2 条安装线,没有变化)

提前致谢,

吉姆

Con*_*enu 5

卷已正确安装,但它们没有出现使用 df -h.

如果您真的想查看您可以cat /proc/mounts在容器内执行的所有挂载,它们将显示:

/dev/sdb /var/jenkins_home ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
/dev/sdb /var/lib/ansible ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)

您还可以docker inspect CONTAINER_NAME查看 Mounts,您应该会看到如下内容:

    "Mounts": [
        {
            "Type": "volume",
            "Name": "tst1_jenkins-ansible",
            "Source": "/data/docker-data/volumes/tst1_jenkins-ansible/_data",
            "Destination": "/var/lib/ansible",
            "Driver": "local",
            "Mode": "rw",
            "RW": true,
            "Propagation": ""
        },
        {
            "Type": "volume",
            "Name": "tst1_jenkins-data",
            "Source": "/data/docker-data/volumes/tst1_jenkins-data/_data",
            "Destination": "/var/jenkins_home",
            "Driver": "local",
            "Mode": "rw",
            "RW": true,
            "Propagation": ""
        }
    ],
Run Code Online (Sandbox Code Playgroud)