我正在尝试使用Docker。这是我的dockerfile:
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD 123
ENV MYSQL_DATABASE users
ENV MYSQL_USER admin
ENV MYSQL_PASSWORD 1234
ADD setup.sql /docker-entrypoint-initdb.d
EXPOSE 3306
CMD tail -f /dev/null
以下是我从容器访问mysql的尝试。
root @ 76757566f93a:/#mysql -uroot -p123 mysql:[警告]使用 命令行界面上的密码可能不安全。错误2002 (HY000):无法通过套接字连接到本地MySQL服务器 '/var/run/mysqld/mysqld.sock'(2)
最后,..这是我用来运行所有docker命令的Makefile:
container = db
image-name = senso
run:
docker run --name $(container) -d $(image-name)
bash:
docker exec -it $(container) /bin/bash
build:
docker build -t $(image-name) .
我还尝试运行mysql -v
来检查容器中的mysql是否正常,我认为不是。
root @ 76757566f93a:/#mysql -v错误2002(HY000):无法连接到 通过套接字'/var/run/mysqld/mysqld.sock'(2)创建本地MySQL服务器
答案 0 :(得分:2)
原因是mysql
进程未运行,因为您在Dockerfile中覆盖了CMD
,作为基础CMD
开始Mysql
进程。
CMD tail -f /dev/null
从Dockerfile中删除CMD
。
您不需要替换,因为基本映像会处理它,但是如果要替换,请使用以下内容
ENTRYPOINT ["/entrypoint.sh"]
CMD ["mysqld"]
ADD setup.sql /docker-entrypoint-initdb.d
仅在使用正式入口点脚本运行MySQL进程时才可能。