【发布时间】:2021-09-29 07:51:09
【问题描述】:
我只是创建一个容器,例如:
docker run --name mypostgres \
--publish 5432:5432 \
--net=apinetwork \
-e POSTGRES_PASSWORD=pwd \
-e POSTGRES_DB=db_uso \
-d postgres
我在数据库中连接并创建一些表和对象...
在此之后我提交;
docker commit mypostgres user/mypostgres
但是当我从这个图像创建其他容器时:
docker run --name mypostgres2 \
--publish 5432:5432 \
--net=apinetwork \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_DB=correntista \
-d user/mypostgres
我没有看到我在里面创建的对象!
请帮帮我。
【问题讨论】:
-
在创建新容器之前,是否可以尝试断开并重新连接到数据库并验证您的更改是否仍然存在
-
谢谢@smac89。是的。我停止了容器并重新开始,我所有的对象都在那里。但是当使用 docker 提交图像时没有我的对象。我尝试在我的基本容器运行的情况下执行此操作,并且在容器停止的情况下尝试了 agian 之后。但没有任何效果
-
@MarcelloRomani 链接到的问题很好地描述了这种情况;您需要在此处创建一个 Docker 卷并使用
docker run -v选项挂载它。一般来说,您几乎不应该使用docker commit,因为它会导致无法重现的图像。 (如果user/mypostgres基于 PostgreSQL 13.4,并且假设该版本中有一个关键安全版本,您将如何更新该映像?)
标签: postgresql docker