我基于相同的官方postgres图像创建了两个不同的自定义图像。两者的Dockerfile看起来像:
FROM postgres:latest
LABEL vendor="***" \
vendor.website="***" \
description="The postgres database"
COPY init.sh /docker-entrypoint-initdb.d/
这些图像用于不同的docker-compose.yml文件。问题是基于这些映像的容器安装了相同的卷,最终我为不同的应用程序提供了相同的数据库。我以为docker会为不同的容器创建单独的卷。我究竟做错了什么?
码头工人检查信息:
容器1:
“Id”:“b6ce892e88e08b410af2603041789641cdfe9648e5c36d66d0cff8c495de2720”, “图片”:“sha256:4c6ac32f355cdc93251256cc8e8171fc02bb85d719f4efb9ac6bb999ad66b3ab”, ... “坐骑”:[ { “类型”:“音量”, “名称”:“5bb91515eb853e0c18e396b041058d4a03424dfb45c3eb2d2b9890e0b044b461”, “来源”:“/ var / lib / docker / volumes / 5bb91515eb853e0c18e396b041058d4a03424dfb45c3eb2d2b9890e0b044b461 / _data”, “目的地”:“/ var / lib / postgresql / data”, “司机”:“本地”, “模式”:“rw”, “RW”:是的, “传播”:“” } ],
容器2
“Id”:“8c1c9891c462d8520ab107901c39b62fbef389e4501979065a6edb218a25c16a”, “图片”:“sha256:4c6ac32f355cdc93251256cc8e8171fc02bb85d719f4efb9ac6bb999ad66b3ab”, ... “坐骑”:[ { “类型”:“音量”, “名称”:“5bb91515eb853e0c18e396b041058d4a03424dfb45c3eb2d2b9890e0b044b461”, “来源”:“/ var / lib / docker / volumes / 5bb91515eb853e0c18e396b041058d4a03424dfb45c3eb2d2b9890e0b044b461 / _data”, “目的地”:“/ var / lib / postgresql / data”, “司机”:“本地”, “模式”:“rw”, “RW”:是的, “传播”:“” } ],
因为您可以看到基于不同图像(4c6ac32f355cdc93251256cc8e8171fc02bb85d719f4efb9ac6bb999ad66b3ab
和4c6ac32f355cdc93251256cc8e8171fc02bb85d719f4efb9ac6bb999ad66b3ab
)的容器使用相同的卷5bb91515eb853e0c18e396b041058d4a03424dfb45c3eb2d2b9890e0b044b461
。我显然需要他们使用单独的卷。
更新1
我做了以下事情:
更新2
我很困惑。当不同的容器共享一个卷,以及如何避免它?