要禁用Docker容器的端口,有几种不同的方法,具体取决于你的需求和场景:
如果你可以重新创建容器,最简单的方法是停止当前容器并以不发布端口的方式重新运行:
# 停止并删除现有容器
docker stop 容器名
docker rm 容器名
# 重新运行但不发布任何端口
docker run -d --name 容器名 镜像名
对于正在运行的容器,你可以使用防火墙规则来阻止端口:
# 假设要禁用容器的80端口
iptables -I DOCKER -p tcp --dport 80 -j DROP
# 提交当前容器为新镜像
docker commit 容器名 新镜像名
# 运行新镜像但不发布端口
docker run -d --name 新容器名 新镜像名
将容器放入内部网络,不暴露给主机:
# 创建内部网络
docker network create --internal 内部网络名
# 将容器连接到内部网络
docker network connect 内部网络名 容器名
如果你使用docker-compose,只需移除或注释掉ports部分:
services:
myapp:
image: myimage
# ports:
# - "8080:80"
选择哪种方法取决于你的具体需求和容器运行环境。