我使用以下命令在我們的服務器上運行 Jenkins 容器實體:
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 規則:
iptables -I DOCKER-USER -i eth0 ! -s 127.0.0.1 -j DROP
結果是埠關閉了,但是我的Jenkins實體無法上網下載...
任何人都可以幫助我關閉向世界公開的埠,但我的詹金斯仍然可以訪問互聯網嗎?
uj5u.com熱心網友回復:
來自https://docs.docker.com/engine/reference/commandline/run/:
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
這將容器的埠 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/:
默認情況下,Docker 守護行程將暴露 0.0.0.0 地址上的埠,即主機上的任何地址。如果要更改該行為以僅公開內部 IP 地址上的埠,則可以使用 --ip 選項指定不同的 IP 地址。但是,設定 --ip 只會更改默認值,不會將服務限制到該 IP。
如果您希望 docker 僅在本地主機上偵聽,請執行-p 127.0.0.1:8180:8080
.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537084.html