我知道我可以将postgres图像的默认文件夹更改为指向一个卷 - 在这种情况下,显然该卷将持续存在。但我没有这样做,因为我想了解这个图像的默认行为。
所以我只是跑了:
# in one terminal
docker pull postgres
# as a foreground process:
docker run -P --name dev_db postgres
# in another terminal
docker run --rm -it --link dev_db:dev_db /bin/bash
# in this container, I created some databases and added some data to them
# then:
# docker stop dev_db
# docker commit -m "Add data" dev_db postgres_with_data
Run Code Online (Sandbox Code Playgroud)
我以为结果,新图像postgres_with_data将包含我添加的数据;但事实并非如此。提交容器时不应该保存吗?如果没有,它去了哪里,我该如何保存?
感谢您的回答。因此,如果我理解正确,当我停止容器时,/var/lib/postgresql/data在postgres Dockerfile执行后写入的任何内容都会VOLUME /var/lib/postgresql/data消失?
但似乎VOLUMEDockerfile 中的命令等效于docker run -P --name dev_db -v $(docker volume create):/var/lib/postgresql/data postgres. 但是我希望docker volume create在容器停止时创建的卷实际上不会消失;事实上,我认为即使根据文档删除容器,它也不会消失:
即使容器本身被删除,数据量也会持续存在。
我错过了什么?
小智 6
我不知道是否为时已晚,但是如果您希望数据保留在 docker 容器内,您可以将 pgdata 目录指向除现在指向的位置之外的任何位置...因此不查看卷而不是重置:
docker run -e PGDATA=/var/lib/postgresql/pgdata
而不是 PGDATA=/var/lib/postgresql/data
在 FROM library/postgres:9.5 repo 上为我工作。
| 归档时间: |
|
| 查看次数: |
2523 次 |
| 最近记录: |