数据库
首页 > 数据库> > mysql客户端调用docker-compose run vs.docker-compose exec

mysql客户端调用docker-compose run vs.docker-compose exec

作者:互联网

为什么在使用docker-compose run调用时需要指定主机?

例如

docker-compose运行db_container mysql -uuser -ppass db_name -h db_container

似乎直接等同于

docker-compose exec db_container mysql -uuser -ppass db_name

当从第一个示例中省略主机名标志时,mysql失败,并显示“无法连接到套接字”错误.

这两个例子有什么区别?

解决方法:

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

这就是为什么它起作用.在这种情况下,不会启动任何额外的容器

标签:docker,docker-compose,mysql
来源: https://codeday.me/bug/20191025/1930588.html