docker 针对 运行ning mysql 容器编写 运行 mysql 客户端
docker compose run mysql client against running mysql container
我刚刚进入 docker 并使用 the official image 设置了一个简单的 mysql 5.5。这是我的相关文件。
#Dockerfile
FROM mysql:5.5
ENV MYSQL_ROOT_PASSWORD password
#docker-compose.yml
db:
build: .
现在我 运行 docker-compose build
然后是 docker-compose up
给出以下输出
db_1 | 150828 14:04:17 [Note] mysqld: ready for connections.
db_1 | Version: '5.5.45' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)
现在我在另一个终端 运行 docker-compose run db bash
进入 bash shell。但是在这个 shell 中,如果我尝试连接 mysql 客户端,我会得到一个错误。
root@94a43b1f5be0:/# mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
同样的事情也适用于普通的旧 docker。
示例(使用相同的 Docker 文件):
docker build -t my-new-image .
docker run --name my-new-image-container -d my-new-image
docker exec -it my-new-image-container bash
root@8408282d162f:/# mysql -u root -p
mysql>
我在使用 docker-compose 时做错了什么。如何连接到我的 运行ning mysql 容器并触发一些查询。任何帮助将不胜感激。
使用docker-compose run
实际上是启动了一个新的容器,而不是连接到现有的容器。在这种情况下,您已经用 bash
覆盖了命令,因此 mysql 服务器尚未启动。
您可以做的只是 docker exec
到 docker-compose ps
给定的容器中。
顺便说一句,您不需要在这里构建自己的映像;您可以在 docker-compose.yml
中的环境变量中设置密码。这也有不将密码烘焙到图像中的优点。
我刚刚进入 docker 并使用 the official image 设置了一个简单的 mysql 5.5。这是我的相关文件。
#Dockerfile
FROM mysql:5.5
ENV MYSQL_ROOT_PASSWORD password
#docker-compose.yml
db:
build: .
现在我 运行 docker-compose build
然后是 docker-compose up
给出以下输出
db_1 | 150828 14:04:17 [Note] mysqld: ready for connections.
db_1 | Version: '5.5.45' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)
现在我在另一个终端 运行 docker-compose run db bash
进入 bash shell。但是在这个 shell 中,如果我尝试连接 mysql 客户端,我会得到一个错误。
root@94a43b1f5be0:/# mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
同样的事情也适用于普通的旧 docker。 示例(使用相同的 Docker 文件):
docker build -t my-new-image .
docker run --name my-new-image-container -d my-new-image
docker exec -it my-new-image-container bash
root@8408282d162f:/# mysql -u root -p
mysql>
我在使用 docker-compose 时做错了什么。如何连接到我的 运行ning mysql 容器并触发一些查询。任何帮助将不胜感激。
使用docker-compose run
实际上是启动了一个新的容器,而不是连接到现有的容器。在这种情况下,您已经用 bash
覆盖了命令,因此 mysql 服务器尚未启动。
您可以做的只是 docker exec
到 docker-compose ps
给定的容器中。
顺便说一句,您不需要在这里构建自己的映像;您可以在 docker-compose.yml
中的环境变量中设置密码。这也有不将密码烘焙到图像中的优点。