鍍金池/ 問(wèn)答/Linux  數(shù)據(jù)庫(kù)/ docker commit 后的鏡像沒(méi)有數(shù)據(jù)

docker commit 后的鏡像沒(méi)有數(shù)據(jù)

我想弄一個(gè)帶有數(shù)據(jù)的鏡像,這樣就可以在不同的環(huán)境(主機(jī))中 pull 下來(lái)這個(gè)鏡像就會(huì)有完整的數(shù)據(jù)了.

我從 docker mysql5.5 下載了一個(gè)dockerfile 文件,在本地 build 之后生成了一個(gè) image .
后來(lái)基于這個(gè) image 創(chuàng)建了一個(gè) mysql5.5 的容器, 并且基于在這個(gè)容器里面導(dǎo)入了一個(gè)數(shù)據(jù)庫(kù).
導(dǎo)入數(shù)據(jù)是成功,容器也正常運(yùn)行.

接著我對(duì)這個(gè)容器 做了 commmit 的操作,并且打了 tag ,推送到 docker.hub 了.

但是我再?gòu)?docker hub 中 pull 這個(gè) image . 發(fā)現(xiàn)基于這個(gè) image 創(chuàng)建的容器,只有一個(gè)空的 mysql . 里面沒(méi)有我導(dǎo)入的那個(gè)數(shù)據(jù)庫(kù).

我是遺漏了什么么?

我的操作記錄為:

clipboard.png

可以看到新的 image 是350MB 的.

問(wèn)題就出現(xiàn)這里,我再?gòu)奈?pull 下來(lái)的鏡像也是 350M 的.但是這個(gè) 鏡像創(chuàng)建的容器 卻是空數(shù)據(jù)庫(kù)的.

如果我這個(gè)方式不行,那么有什么辦法能實(shí)現(xiàn)我的目的么?

回答
編輯回答
別逞強(qiáng)

建議你還是在將數(shù)據(jù)卷掛載到本地
給你我本地開(kāi)發(fā)所使用的docker-compose和Dockerfile部分代碼作為參考,希望可以幫助到你

db:
        container_name: 'local_db'
        build: ./services/mysql
        environment:
          MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        ports:
          - "3306:3306"
        volumes:
          - ${MYSQL_DATA_PATH}:/var/lib/mysql
FROM mariadb:10.1
MAINTAINER crazycodes <919342864@qq.com>

ADD ./config/default.cnf /etc/mysql/conf.d/default.cnf
2018年6月3日 22:44
編輯回答
念初
  • 從dockerfile可以知道,MySQL的數(shù)據(jù)寫(xiě)到了VOLUME /var/lib/mysql。
  • 數(shù)據(jù)不應(yīng)該存放在容器,可以在啟動(dòng)容器時(shí)掛載本地目錄到/var/lib/mysql。
2017年2月5日 12:43