Mysql客户端使用`docker-compose run`与`docker-compose exec`进行调用

时间:2017-09-14 15:46:05

标签: mysql docker docker-compose

为什么在使用docker-compose run进行呼叫时需要指定主机?

e.g。

docker-compose run db_container mysql -uuser -ppass db_name -h db_container

似乎是

的直接等价物

docker-compose exec db_container mysql -uuser -ppass db_name

当省略第一个示例中的hostname标志时,mysql失败并显示“无法连接到套接字”错误。

这两个例子之间有什么区别?

1 个答案:

答案 0 :(得分:4)

docker-compose run将在同一网络上启动一个名为folder_db_container_run_1的新容器。这不是运行mysql,因为你传递了一个命令。所以它正在运行该命令。因此,您从此容器连接到原始数据库容器

docker-compose run db_container mysql -uuser -ppass db_name -h db_container

当你执行exec时,你进入正在运行的容器。而不指定主机意味着本地mysql

docker-compose exec db_container mysql -uuser -ppass db_name

这就是为什么它有效。在这种情况下不会启动额外的容器