运行 mysql 个实例在 Docker 容器中
Run mysql instance in Docker container
我想在 Docker 中 运行 一个 mysql 容器。我使用的Docker文件是官方repo[here]中定义的Docker文件。
我只用 2 行扩展了这个 Docker 文件,这样我就可以导入一个初始化 sql 文件,像这样:
ADD my-init-file.sql /my-init-file.sql
CMD ["mysqld", "--init-file=/my-init-file.sql"]
我想 运行 这个实例作为守护进程但是当我执行这个命令时,从 documentation:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
容器自动退出。我想 运行 它作为守护进程,这样我就可以 link 应用程序(如 wordpress 站点)在另一个容器中到 mysql 数据库。
也许我遗漏了什么。谁能告诉我怎么做?
[编辑] 我忘了说我 运行 docker logs my-container
在启动容器后没有错误:
Running mysql_install_db ...
Finished mysql_install_db
docker ps
显示没有 运行ning 容器。
我的猜测是命令执行成功但 mysqld 守护进程没有启动。
Dmitri,在你使用 -d
参数创建 docker run
之后,如果只有 CMD
命令没有返回退出代码,你的容器分离并且已经作为守护进程工作。
您可以通过docker ps
命令检查运行 个容器。
您可以通过 运行 docker ps -a
.
查看所有容器
此外,我认为您需要在容器外打开 mysql 端口。您可以使用 -P
参数或在容器之间进行通信的更好方法是 docker links.
你的 Dockerfile 似乎没问题。不过,您的 init 文件可能有问题。如果 MySQL 终止,则容器将终止。
第一个调试步骤是查看日志:
docker logs some-mysql
无论容器是停止还是 运行ning,您都可以使用它。希望您会看到一些明显的东西,比如您漏掉了一些分号。
如果日志没有帮助,接下来要尝试进入容器内部并亲眼看看发生了什么
docker run -e MYSQL_ROOT_PASSWORD=mysecretpassword -it mysql /bin/bash
这将使您的容器内有一个 Bash shell。那么你可以运行
mysqld --init-file=/my-init-file.sql
看看会发生什么。也许您的 init 文件中的某些内容告诉 MySQL 干净退出,因此您没有收到任何日志但命令终止。
我想在 Docker 中 运行 一个 mysql 容器。我使用的Docker文件是官方repo[here]中定义的Docker文件。 我只用 2 行扩展了这个 Docker 文件,这样我就可以导入一个初始化 sql 文件,像这样:
ADD my-init-file.sql /my-init-file.sql
CMD ["mysqld", "--init-file=/my-init-file.sql"]
我想 运行 这个实例作为守护进程但是当我执行这个命令时,从 documentation:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
容器自动退出。我想 运行 它作为守护进程,这样我就可以 link 应用程序(如 wordpress 站点)在另一个容器中到 mysql 数据库。
也许我遗漏了什么。谁能告诉我怎么做?
[编辑] 我忘了说我 运行 docker logs my-container
在启动容器后没有错误:
Running mysql_install_db ...
Finished mysql_install_db
docker ps
显示没有 运行ning 容器。
我的猜测是命令执行成功但 mysqld 守护进程没有启动。
Dmitri,在你使用 -d
参数创建 docker run
之后,如果只有 CMD
命令没有返回退出代码,你的容器分离并且已经作为守护进程工作。
您可以通过docker ps
命令检查运行 个容器。
您可以通过 运行 docker ps -a
.
此外,我认为您需要在容器外打开 mysql 端口。您可以使用 -P
参数或在容器之间进行通信的更好方法是 docker links.
你的 Dockerfile 似乎没问题。不过,您的 init 文件可能有问题。如果 MySQL 终止,则容器将终止。
第一个调试步骤是查看日志:
docker logs some-mysql
无论容器是停止还是 运行ning,您都可以使用它。希望您会看到一些明显的东西,比如您漏掉了一些分号。
如果日志没有帮助,接下来要尝试进入容器内部并亲眼看看发生了什么
docker run -e MYSQL_ROOT_PASSWORD=mysecretpassword -it mysql /bin/bash
这将使您的容器内有一个 Bash shell。那么你可以运行
mysqld --init-file=/my-init-file.sql
看看会发生什么。也许您的 init 文件中的某些内容告诉 MySQL 干净退出,因此您没有收到任何日志但命令终止。