3 回答
TA贡献1812条经验 获得超5个赞
这就是我要做的:
提交活动容器。
在端口打开的情况下,使用新映像再次运行容器(我建议安装共享卷并同时打开ssh端口)
sudo docker ps
sudo docker commit <containerid> <foo/live>
sudo docker run -i -p 22 -p 8000:80 -m /data:/data -t <foo/live> /bin/bash
TA贡献1854条经验 获得超8个赞
虽然您无法公开现有容器的新端口,但是您可以在同一Docker网络中启动一个新容器,并将其转发到原始容器。
# docker run \
--rm \
-p $PORT:1234 \
verb/socat \
TCP-LISTEN:1234,fork \
TCP-CONNECT:$TARGET_CONTAINER_IP:$TARGET_CONTAINER_PORT
工作的例子
启动一个侦听端口80的Web服务,但不公开其内部端口80(哎呀!):
# docker run -ti mkodockx/docker-pastebin # Forgot to expose PORT 80!
找到其Docker网络IP:
# docker inspect 63256f72142a | grep IPAddress
"IPAddress": "172.17.0.2",
verb/socat在端口8080暴露的情况下启动,并使其将TCP流量转发到该IP的端口80:
# docker run --rm -p 8080:1234 verb/socat TCP-LISTEN:1234,fork TCP-CONNECT:172.17.0.2:80
现在,您可以访问http:// localhost:8080 /上的pastebin ,您的请求将socat:1234转发给pastebin:80,并将其转发到,并且响应的路径相反。
- 3 回答
- 0 关注
- 540 浏览
添加回答
举报