为什么在使用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失败并显示“无法连接到套接字”错误。
这两个例子之间有什么区别?
答案 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
这就是为什么它有效。在这种情况下不会启动额外的容器