日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 問題描述
  • 問題分析
  • 問題解決
  • 總結

問題描述

部署了一個Docker環境,宿主機可以訪問Internet,啟動了一個容器發現容器里的服務無法訪問Internet,Docker網絡使用的是橋接(bridge)模式。

問題分析

使用Docker橋接模式啟動的容器,宿主機如果可以訪問外網,按理來說Docker容器本身也可以訪問外網的。其原理:容器網卡與宿主機的docker0網橋互聯,在通過nat的轉換,通過宿主機的網卡,連接到外網。那可以初步判斷容器內部訪問不了外網,可能是某些配置的原因。

問題解決

檢查docker bridge網絡配置:

# docker network inspect bridge 
[
    {
        "Name": "bridge",
        "Id": "52d99eec11c4706581e4b8235613d5258ef2c318557baddbb79766136d7b0868",
        "Created": "2022-10-22T19:31:19.358514137+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "false",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

發現:com.docker.network.bridge.enable_ip_masquerade值為false,代表是否開啟IP偽裝,false代表未開啟。

查看docker服務啟動命令:

#ps -ef|grep dockerd
root     15273     1  6 11:35 ?        00:14:25 /usr/bin/dockerd --iptables=false --exec-opt native.cgroupdriver=systemd --data-root=/var/lib/docker --log-opt max-size=50m --log-opt max-file=5

發現參數:–iptables=false,查閱docker官網:

Docker容器內部無法訪問外網原因以及解決辦法

 大概意思是否禁止docker進程添加iptables規則,false代表禁止,禁止后即使開啟IP偽裝也不生效。可以猜到就是這個參數搞的問題。

Docker服務是yum install部署的,可能有些參數讀取的一些預先定義的包環境變量里。

讓我們將–iptables改為true,最簡單的方式就是覆蓋原啟動命令中的參數,在docker啟動命令最后添加–iptables=true:

# vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target  containerd.service
BindsTo=containerd.service
[Service]
Type=notify
Environment=GOTRACEBACK=crash
ExecReload=/bin/kill -s HUP $MAINPID
Delegate=yes
KillMode=process
ExecStart=/usr/bin/dockerd \
          $DOCKER_OPTS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_DNS_OPTIONS \
          --ip-masq=true \
          --iptables=true
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=1min
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

然后重啟docker進程: 

# systemctl daemon-reload
# systemctl restart docker

然后發現,容器內部可以訪問外網了~~~

參考資料:dockerd | Docker Documentation

—————————————————————————————————

查閱官網發現:iptables默認值是true的,應該是yum源下載的包里啟動命令加了這個參數而且改成了false,這也是導致容器內部無法訪問外網的原因之一。

總結

分享到:
標簽:原因 容器 無法訪問 服務器 解決辦法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定