如果您删除ports:,容器将无法从其特定Docker网络外部访问。如果您使用的是一个非常特定的配置,其中主机可以直接联系Docker私有IP地址,则无法阻止这种情况。(因为这只适用于一种非常特定的配置,所以指定它们通常没有什么用处。) 所以如果你有Dockerfile: 代码语言:javascript复制version: "3"
services:
apache:
build: ./bin/apache
restart: always
ports:
- "80:80"
mysql:
build: ./bin/mysql
restart: always
# no ports:
environment: { as: above }
volumes:
- sql:/var/lib/mysql
volumes:
sql:apache容器可以连接到mysql:3306 (没有任何expose:或ports:指令)。主机系统可以连接到http://localhost:80以访问apache容器,但不能直接连接到mysql容器(除非它是原生Linux主机,并且您手动查找IP地址,否则不推荐)。Networking in Compose提供了更多关于容器网络环境的信息。
|