首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止集装箱港口暴露于世界各地,却又能接入互联网?

问如何防止集装箱港口暴露于世界各地,却又能接入互联网?
EN

Stack Overflow用户
提问于 2022-11-20 09:02:20
回答 1查看 43关注 0票数 2

我使用以下命令在服务器上运行Jenkins容器实例:

代码语言:javascript
复制
docker run --name jenkins --restart=on-failure -d \
  --network jenkins --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/jenkincerts/client --env DOCKER_TLS_VERIFY=1 \
  -p 8180:8080 -p 50000:50000 \
  -v jenkins-home:/var/jenkins_home \
  -v docker-certs-jk:/jenkincerts/client:ro \
  myjenkin

但是我发现端口8180暴露在世界上,所以我进行了研究并找到了一个解决方案,用命令添加iptables规则:

代码语言:javascript
复制
iptables -I DOCKER-USER -i eth0 ! -s 127.0.0.1 -j DROP

结果是端口关闭了,但是我的Jenkins实例无法访问互联网下载.

有人能帮我关闭暴露在世界各地的港口吗,但我的詹金斯仍然可以上网吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-20 09:53:51

来自https://docs.docker.com/engine/reference/commandline/run/:

码头运行-p 127.0.0.1:80:8080/tcp

这将容器的端口8080绑定到127.0.0.1上的TCP端口80 .

注意,没有绑定到主机的端口(即-p 80:80而不是-p 127.0.0.1:80:80)可以从外部访问。如果您将UFW配置为阻止此特定端口,这也适用于Docker管理其自己的iptables规则。阅读更多

“阅读更多”链接https://docs.docker.com/network/iptables/:

默认情况下,

守护进程将公开0.0.0.0地址上的端口,即主机上的任何地址。如果要将此行为更改为仅公开内部IP地址上的端口,则可以使用--ip选项指定不同的IP地址。但是,设置--ip只更改默认值,它不将服务限制在该IP上。

如果您希望停靠者只在本地主机上收听,请执行-p 127.0.0.1:8180:8080。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74506813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档