运行$ docker stack deploy ...
时,有没有办法以主机只能 的方式发布端口?
我正在使用目前在Digital-Ocean运行的Ubuntu服务器实例。
假设我运行名为 db 的 mysql 服务。我可以从其他容器访问数据库,而无需在ports: ["3306:3306"]
文件中使用docker-compose.yml
。从我的其他容器中我可以使用 db 作为mysql主机和默认端口。这可以按预期工作。
现在我想从我的主机访问数据库。据我所知,如果没有发布端口,这是不可能的。当我将ports: ["3306:3306"]
放入docker-compose.yml
文件时,我可以使用mysql -uroot -p -h 127.0.0.1
访问数据库。问题是,数据库现在也可以从外部访问,我可以使用mysql -uroot -p -h foo.com
从任何PC登录数据库,这似乎是不必要的不安全。
我可以考虑一些您可能需要的其他用例:
如果使用其他解决方案可以解决这些用例,我很乐意听到。
ports: ["127.0.0.1:3306:3306"]
。这在用户docker-compose up
时按预期工作。不幸的是,这在使用Docker堆栈时不起作用。