docker commit 后的镜像没有数据

我想弄一个带有数据的镜像,这样就可以在不同的环境(主机)中 pull 下来这个镜像就会有完整的数据了.

我从 docker mysql5.5 下载了一个dockerfile 文件,在本地 build 之后生成了一个 image .
后来基于这个 image 创建了一个 mysql5.5 的容器, 并且基于在这个容器里面导入了一个数据库.
导入数据是成功,容器也正常运行.

接着我对这个容器 做了 commmit 的操作,并且打了 tag ,推送到 docker.hub 了.

但是我再从 docker hub 中 pull 这个 image . 发现基于这个 image 创建的容器,只有一个空的 mysql . 里面没有我导入的那个数据库.

我是遗漏了什么么?

我的操作记录为:

clipboard.png

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

问题就出现这里,我再从我 pull 下来的镜像也是 350M 的.但是这个 镜像创建的容器 却是空数据库的.

如果我这个方式不行,那么有什么办法能实现我的目的么?

阅读 11.3k
2 个回答
  • 从dockerfile可以知道,MySQL的数据写到了VOLUME /var/lib/mysql
  • 数据不应该存放在容器,可以在启动容器时挂载本地目录到/var/lib/mysql

建议你还是在将数据卷挂载到本地
给你我本地开发所使用的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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题