[英]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
圖像的類似問題。
不幸的是,沒有一個簡單的解決方法,但這里有一些我見過的常用方法:
如果您只是希望數據在容器啟動之間保持不變,我建議將其保存在匿名卷中以保持簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.