为什么在docker和MySQL中使用几乎相同的命令会得到不同的结果?

为什么在docker和MySQL中使用几乎相同的命令会得到不同的结果?,docker,Docker,我使用centos7和Docker版本19.03.13,构建4484c46d9d 我希望MySQL容器的/etc/MySQL绑定挂载到/data/etc/my01,并使用以下命令: docker run -d -p 3306:3306 \ -v /data/etc/my01/conf.d:/etc/mysql/conf.d \ -v /data/my01:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=25802580 --name my01 mysql 没关系

我使用centos7和Docker版本19.03.13,构建4484c46d9d

我希望MySQL容器的/etc/MySQL绑定挂载到/data/etc/my01,并使用以下命令:

docker run -d -p 3306:3306 \
-v /data/etc/my01/conf.d:/etc/mysql/conf.d \
-v /data/my01:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=25802580 --name my01 mysql
没关系,容器在后台运行

但是,我删除了此容器并创建了另一个use follow命令:

docker run -d -p 3307:3306 \
-v /data/etc/my02:/etc/mysql \
-v /data/my02:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=25802580 --name my02 mysql
当我使用docker ps时,我发现此容器已停止

我无法理解这种行为,因为这两个命令的原理几乎相同。 为什么使用几乎相同的命令会得到不同的结果?
如何更正最后一个命令?

关于第二个命令:

docker run -d -p 3307:3306 \
-v /data/etc/my02:/etc/mysql \
-v /data/my02:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=25802580 --name my02 mysql
第一个卷定义与第一个容器不同:

-v/data/etc/my02:/etc/mysql\ vs -v/data/etc/my01/conf.d:/etc/mysql/conf.d

启动容器时可能会出现问题,例如,如果配置失败,则容器无效,因此容器尝试启动,然后退出

通过在非后台模式下运行容器并删除-d参数,可以轻松调试此类问题:

docker run -p 3307:3306 \
-v /data/etc/my02:/etc/mysql \
-v /data/my02:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=25802580 --name my02 mysql

然后,您将在控制台中看到容器的错误输出。

欢迎来到程序员论坛。我认为你的问题在这里是离题的,因为它实际上是关于运行MySQL服务的,最好继续问下去。然而,你问的这个问题基本上是无法回答的,因为它缺少很多必要的信息。您至少需要指定docker映像的真正含义mysql只是一个名称,数据目录的内容是什么。很可能/data/etc/my02中的配置是假的。您应该在前台模式下运行,并查看您得到的确切错误。要想用这么少的信息帮助你,而不进行疯狂的猜测是不可能的。