2016-08-22 62 views
0

我从码头集线器中拉出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 

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

+0

图像可能具有定义为卷的数据目录。 – Henry

回答

0

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

你最好的选择(以及行业最佳实践)将把你的改变放到一个Dockerfile中(以“FROM mysql”开头)。引述docs

当容器启动的第一次,具有指定名称的新数据库将被创建并与所提供的配置变量初始化。此外,它将执行/docker-entrypoint-initdb.d中的扩展名为.sh,.sql和.sql.gz的文件。文件将按字母顺序执行。

所以,如果你把你的数据/模式/放在一个

​​

任何与mysqldump的并......在那里,你应该是金色的。

+0

我在启动mysql docker时没有指定任何卷。我在哪里可以找到所有的数据存储?我检查了我的主机没有/ var/lib/mysql目录。 –

+0

只要将路径声明为卷,就不会保留对其的更改。从文档(http://lp7h.qr.ai):“如果任何构建步骤在声明后更改了卷中的数据,则这些更改将被丢弃。” –