如何使用docker-compose版本3制作永久命名的docker卷,该版本在主机和容器上指定了一个目录

时间:2019-04-05 16:19:20

标签: docker-compose docker-volume

我尝试遵循docker-compose参考

https://docs.docker.com/compose/compose-file/

但无法获得有效的示例。

目前,我能最接近地创建一个命名卷并通过mongo服务上的docker-compose引用它的方法是通过docker在外部创建目录路径和卷

mkdir -p /home/$USER/volumes/app 
docker volume create --opt type=none --opt device=/home/$USER/volumes/app --opt o=bind app

然后在运行docker-compose

docker-compose up -d --build --force-recreate

使用docker-compose.yml

version: "3.3"
volumes:
  app:
    external: true
services:
  mongodb:
    container_name: app-mongodb
    image: mongo:latest
    ports:
      - 27017:27017 # Mongo
    volumes:
      - app:/data

 ... # Other Services on other containers that write data to mongo

结果得到

docker volume list

DRIVER              VOLUME NAME
local               app

docker volume inspect app

[
    {
        "CreatedAt": "2019-04-05T11:34:07-04:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/app/_data",
        "Name": "app",
        "Options": {
            "device": "/home/gitlab-runner/volumes/app",
            "o": "bind",
            "type": "none"
        },
        "Scope": "local"
    }
]

然后我在mongodb容器上执行一个shell,并按预期在/ data / db目录中找到文件。

docker exec -it app-mongodb /bin/bash
ls /data/db

WiredTiger    _mdb_catalog.wt    collection-17-4313982868898758556.wt  collection-25-4313982868898758556.wt  diagnostic.data 
...

然后我可以退出外壳程序并转到Mountpoint和Options.device,然后看到目录,但是没有看到在容器中看到的文件。我可以触摸Mountpoint和Options.device目录中的文件,然后在任一目录中查看它们。文件没有出现在容器中。

那么据我所知...

  • 我要附加该卷,否则目录将不会显示。
  • 运行时创建的文件未更新。

如何解决此问题,以便主机上的内容就是容器上的内容?

0 个答案:

没有答案