提交一个docker容器,但我没有做任何更改

时间:2016-08-22 04:39:51

标签: docker

我从docker hub中提取了mysql,并且能够运行此容器。在创建了一些数据库和表之后,我想将此容器提交到新映像以便持久保存我的更改。通过这样做,我希望新图像可以运送到包含所有数据的其他成员。我用下面的命令:

$ docker ps
CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
3aca4ff8790d        mysql                                        "/entrypoint.sh mysql"   6 months ago        Up 2 minutes        0.0.0.0:3306->3306/tcp   lonely_liskov

$docker commit 3aca4ff8790d cooltoo/cooltoo_db:LATEST

当我运行这个新图像时,我的所有更改和设置都不存在。如何使用我的所有更改和设置将容器保存到新图像中?

1 个答案:

答案 0 :(得分:0)

亨利是对的; MySQL容器Dockerfile将/ var / lib / mysql配置为卷。

您最好的选择(以及行业最佳实践)是将您的更改放入Dockerfile(以“FROM mysql”开头)。引用docs

  

首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh,.sql和.sql.gz的文件,这些文件位于/docker-entrypoint-initdb.d中。文件将按字母顺序执行。

所以,如果你采取你的数据/架构/其他和mysqldump它并放入

ADD foo.sql /docker-entrypoint-initdb.d/foo.sql

......在那里,你应该是金色的。