为什么调用时需要指定主机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
当从第一个示例中省略主机名标志时,mysql 会失败并出现“无法连接到套接字”错误。
这两个例子有什么区别?
docker-compose run 将在同一网络上启动一个新容器,其名称如下folder_db_container_run_1
。由于您向它传递了命令,因此它没有运行 mysql。所以它正在运行该命令。因此,您从此容器连接到原始数据库容器
docker-compose run db_container mysql -uuser -ppass db_name -h db_container
当你执行 exec 时,你就进入了正在运行的容器。并且不指定host表示本地mysql
docker-compose exec db_container mysql -uuser -ppass db_name
这就是它起作用的原因。在这种情况下不会启动额外的容器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)