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