Docker 容器仅在附加卷时停止 运行

Docker container stops running only when volume is attached

我在 ubuntu 图像上写了 运行s mysql 的 dockerfile。 Dockerfile 是:

FROM ubuntu
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
RUN sed -i '43s/.*/bind-address            = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
EXPOSE 3306
ENTRYPOINT service mysql start && bash

如果我运行:

docker run -dit mysql-server

构建容器后一切正常,我的 Apache/PHP 容器可以与其通信。但是,如果我 运行 它附加了一个卷 (docker run -dit -v ~/vol/:/var/lib/mysql/ mysql-server),容器将在 30 秒后停止 运行ning(我很确定每次的时间都相同)。

有谁知道我可以保持容器启动并安装卷的方法吗?我以前从未遇到过这个问题,也无法在网上找到其他任何东西(我已经找了一段时间)。谢谢。

这是因为您用 ~/vol 的内容屏蔽了 /var/lib/mysql 的内容,我假设它是空的。因此 MySQL 服务器无法启动,因为它缺少数据库文件。我个人会在您的自定义实现上使用官方图像,因为它将处理您正在寻找的内容 here is the link to Dockerhub。如果您需要这些更改,它具有安装自定义 my.cnf 文件的选项。但是默认情况下图像确实绑定到 0.0.0.0。有关配置选项,请参阅 Dockerhub link。

希望对您有所帮助

迪伦