2016-08-22 31 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):「如果任何構建步驟在聲明後更改了卷中的數據,則這些更改將被丟棄。」 –