簡體   English   中英

docker run --volume 映射被忽略

[英]docker run --volume mapping ignored

我因此成功運行了 PostgreSQL:

$ docker run --name postgresql --env POSTGRES_PASSWORD=password --publish 6000:5432 --volume /home/russ/dev/pg:/var/lib/postgresql/data postgres

才發現:

$ docker inspect postgresql
...
        "Mounts": [
            {
                "Type": "volume",
                "Name": "06d27a1fe489cedfa47d6a3e801cb286494958e1c3a17f044205629cc7070952",
                "Source": "/var/lib/docker/volumes/06d27a1fe489cedfa47d6a3e801cb286494958e1c3a17f044205629cc7070952/_data",
                "Destination": "/var/lib/postgresql/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
...

使用 Docker 通常的隨機文件系統支持,而不是我嘗試映射的硬編碼路徑。 為什么會這樣或者我應該怎么做?

如果您查看Postgres Dockerfile ,您會看到一個VOLUME [/var/lib/postgresql/data]

此命令創建您看到的默認“匿名”卷,並優先於您通過 CLI 提供的--volume參數(以及“子” Dockerfile中的任何命令或 docker docker-compose文件中的配置)。

Docker 這個非常煩人的怪癖也適用於其他命令,目前正在https://github.com/moby/moby/issues/3465中進行辯論。 評論描述了mysql圖像的類似問題。

不幸的是,沒有一個簡單的解決方法,但這里有一些我見過的常用方法:

  • 重新配置 Postgres 以使用不同的目錄並安裝到該目錄
  • 將另一個容器掛載到同一個匿名卷和您的機器上,並讓它定期復制數據

如果您只是希望數據在容器啟動之間保持不變,我建議將其保存在匿名卷中以保持簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM