提交docker容器,但不提交';我没有做任何改变

提交docker容器,但不提交';我没有做任何改变,docker,Docker,我从docker hub中提取了mysql,并且能够运行这个容器。在创建一些数据库和表之后,我想将这个容器提交到一个新的映像,以便持久化我的更改。通过这样做,我希望新的图像可以发送给其他成员,其中将包括所有数据。我使用以下命令: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS

我从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

当我运行这个新映像时,我的所有更改和设置都不存在。如何将我的容器持久化到一个新图像中,并保留所有更改和设置?

Henry是对的;MySQL容器Dockerfile将/var/lib/MySQL配置为卷

您的最佳选择(以及行业最佳实践)是将您的更改放在Dockerfile中(以“fromMySQL”开头)。引述:

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

所以,如果你把你的数据/模式/任何东西和mysqldump它,并把它放在一个

添加foo.sql/docker入口点initdb.d/foo.sql


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

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

您的最佳选择(以及行业最佳实践)是将您的更改放在Dockerfile中(以“fromMySQL”开头)。引述:

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

所以,如果你把你的数据/模式/任何东西和mysqldump它,并把它放在一个

添加foo.sql/docker入口点initdb.d/foo.sql


…在这里,您应该是金色的。

映像可能将数据目录定义为卷。映像可能将数据目录定义为卷。我在启动mysql docker时没有指定任何卷。我在哪里可以找到所有的数据存储?我已经检查了我的主机没有/var/lib/mysql目录。一旦路径被声明为卷,对它的更改就不会被保留。从docs():“如果任何构建步骤在声明后更改了卷内的数据,这些更改将被丢弃。”我在启动mysql docker时没有指定任何卷。我在哪里可以找到所有的数据存储?我已经检查了我的主机没有/var/lib/mysql目录。一旦路径被声明为卷,对它的更改就不会被保留。从文档():“如果任何生成步骤在声明卷后更改了卷内的数据,则这些更改将被放弃。”