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
1132

被折叠的 条评论
为什么被折叠?



