docker中postgressql容器commit为镜像时,无法把数据文件保存到镜像中
我在postgres-9.4.3中创建了一个用户和一个数据库并导入了数据,不大,几百M是有的,这两个镜像是不一样的,但是大小完全一样。
就是说原本的镜像大小是多少,你在容器中一顿操作之后保存的镜像大小还是多少,不会变,下一次用你自己保存的镜像启动容器的时候,会发现,之前创建的用户,数据库什么的全都不见了。
下面是解决方法
创建容器的时候挂载宿主机文件夹到容器中,把容器中的DB资料存储到宿主机中
docker run --name your-postgresql -v /usr/postgresqldata:/var/lib/postgresql/data/ -e POSTGRES_PASSWORD=postgres -d -p 10000:5432 9367
--name your-postgresql
表示:给这个容器起一个名字,不可重复
-v /usr/postgresqldata:/var/lib/postgresql/data
表示:把宿主机的/usr/postgresqldata挂载到容器/var/lib/postgresql/data的位置,这里最好是些绝对路径,宿主机的路径可以写相对路径,宿主机的文件夹中会有容器中的文件夹中的所有数据
-e POSTGRES_PASSWORD=postgres
表示:给容器中postgres设定环境变量,超级用户的密码
-d 后台运行
-p 10000:5432
表示:10000宿主机的端口对应容器5432端口(postgres默认端口)