Docker 禁止单个容器访问外网

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值