MariaDB永远不会在Docker镜像中启动
我正在创build一个托pipe图像与Ubuntu的可靠性和MariaDB 5.5,但我永远不能让MariaDB启动,除非我真的连接到正在运行的虚拟机。
Dockerfile:
FROM ubuntu:trusty # Upgrade packages RUN apt-get update && apt-get upgrade -y # So we can add a repo to apt RUN apt-get install -y software-properties-common # Add MariaDB repo to aptitude RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db RUN add-apt-repository 'deb http://mirror.jmu.edu/pub/mariadb/repo/5.5/ubuntu trusty main' RUN apt-get update # Install MariaDB RUN DEBIAN_FRONTEND=noninteractive debconf-set-selections << 'mariadb-server-5.5 mysql-server/root_password password PASS' RUN DEBIAN_FRONTEND=noninteractive debconf-set-selections << 'mariadb-server-5.5 mysql-server/root_password_again password PASS' RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server # Start MariaDB RUN service mysql start # Configure MariaDB User permissions RUN echo "CREATE USER 'ubuntu'@'localhost'" | mysql -u root
我正在运行的命令创build:
docker build -t ebth-com-trusty --file `pwd`/Dockerfile `pwd` --no-cache
创build命令总是会失败,因为:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
但是,如果我注释掉CREATE USER命令,然后连接到VM,我可以在运行手动service mysql start
后连接到MariaDB。
这就好像RUN service mysql start
不起作用,我不知道如何进一步debugging。
Dockerfile中的每个命令都在它自己的容器中运行。
你可以想像这个过程:
- 新的容器是使用以前的图像旋转起来的
- 该命令被执行
- 容器被旋转了
- 该容器的图像被用于下一个运行的命令
这意味着命令RUN service mysql start
将启动一个新的容器,启动MariaDB,然后closures容器,包括closuresMariaDB。
请尝试使用CMD和ENTRYPOINT。 你可以把它们想象成设置默认的可执行文件,命令和参数,一旦容器被启动。 不过,两者之间的差别还是有点偏激。 查看文档: CMD和进入点
它看起来像这样:
# Create default user RUN service mysql start && \ echo "CREATE USER 'ubuntu'@'localhost'" | mysql -u root # Start MariaDB ENTRYPOINT ["/bin/bash"] CMD ["service", "mysql", "start"]
- OpenShift错误创build:pods“pod-name”被禁止:未find服务帐户
- 如何finddocker的形象和它的相关子卷
- nvidia-container-cli:初始化错误:cuda错误:未检测到有cudafunction的设备
- 在Mesosphere中创buildpod时的私人registry身份validation
- 如何在debian wheezy docker镜像上安装pgrep / pkill
- 为caffe构buildGPU docker镜像时出错:不支持的gpu架构“compute_60”
- 多个Docker容器可以使用相同的主机/端口运行吗?
- GitLab CI审查环境与docker工人
- :连接PHPMyAdmin到MySQL不起作用