【发布时间】:2016-05-30 12:02:10
【问题描述】:
我正在使用 Docker 创建一个以 mysql 作为基础镜像的 dockerfile:
FROM mysql
#set root pass
ENV MYSQL_ROOT_PASSWORD password
#update linux
RUN apt-get update
#create database
RUN mysql -u root -ppassword -e "CREATE DATABASE dbname"
#install vim
RUN apt-get install vim -y
dockerfile 在我尝试创建数据库的步骤中失败,它没有完成构建并且我收到此错误:
错误 2002 (HY000):无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器
当我删除#create database run 命令时,dockerfile 将构建并且我能够从该映像运行容器。我知道这不是mysql服务器的问题,因为我可以进入容器并手动运行mysql命令成功并且服务状态正在运行。
在文件中使用环境变量,即 MYSQL_ROOT_PASSWORD 也可以让我成功创建数据库,但这仅适用于单个数据库,我需要能够使用 mysql 命令进行查询,例如创建其他数据库 /分配用户等。
这可能是因为我需要指定 docker 容器的主机和端口,但这仍然不允许我连接
RUN mysql -u root -ppassword -h 127.0.0.1 -P 3308 -e "CREATE DATABASE dbname"
奇怪的是,这样做也经常使容器崩溃并使其处于每次我尝试再次重新启动它时它会在启动时再次崩溃的状态。
【问题讨论】:
标签: mysql linux docker virtual-machine dockerfile