☰
Docker 禁止单个容器访问外网,git server 禁止访问外网
2026/10/17 1:45:48 网站建设 项目流程

Windows环境下的docker

windows由于是用WSL2启动的docker,要禁止单个容器不能上网有些麻烦

创建一个完全隔离的内部网络

docker network create --internal my_internal_net

这次的 docker run 命令完全不包含 -p 端口映射参数,因为我们要让它完全隔离。

docker run -d --name git-server --network my_internal_net --mount type=bind,source=“d:/git_server_data”,target=/data gogs/gogs

我们将使用一个官方的、非常小的 alpine/socat 镜像。socat 是一个强大的网络工具,堪称网络工具里的“瑞士军刀”,我们用它来做端口转发。

先创建代理容器,并让它连接到默认的 bridge 网络,同时暴露端口给主机。

docker run -d --name git-proxy -p 9080:9080 --network bridge alpine/socat TCP-LISTEN:9080,fork TCP:git-server:3000

这个命令会因为找不到 git-server 而立刻退出,这是正常的,我们只是先创建它。

把这个代理容器也连接到我们的内部网络

docker network connect my_internal_net git-proxy

这一步完成后,git-proxy 就能“看到” git-server 了。

重新启动代理容器,让它开始工作

docker start git-proxy

Linux环境下的Docker

创建一个私有网络,并禁止它ip伪装

docker network create --driver bridge --opt com.docker.network.bridge.enable_ip_masquerade=false my_private

用这个网络启动容器

docker run -d --name git-server --network my_private -p 10022:22 -p 9080:3000 -v “d:/git_server_data”:/data gogs/gogs

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询