docker上安装的jenkins容器内访问不了外网

1. 问题描述

云容器中安装了jenkins, 但是在页面上进入"Manage Plugins"的"update"选项卡最下面检查时, 显示:

Update information obtained: N/A ago

但是我实际上填写的Update Site 是能很快访问的

http://updates.jenkins.io/current/update-center.json

2. 问题猜测

所以怀疑是docker内部的jenkins,访问不了上面的网址。为了确认, 我在系统里登录docker查看是否能访问外网:

[root@root ~]$ docker exec -it jenkins /bin/bash
bash-5.1# curl www.baidu.com
curl: (6) Could not resolve host: www.baidu.com

果然访问不了。

3.解决docker内部jenkins不能访问外网地址问题:

3.1 查看宿主机防火墙NAT转发

  • 1.退出docker
    exit
  • 2.检查宿主机防火墙转发

    [root@root ~]$ firewall-cmd --query-masquerade
    FirewallD is not running
    [nie@nie ~]$ systemctl start firewalld.service
    # 切换root身份
    [nie@nie ~]$ su root
    [root@nie nie]# firewall-cmd --query-masquerade
    no

    no 确实没;

    masquerade /ˌmæskəˈreɪd/
    n.掩藏,掩饰;伪装,化装;欺骗;化妆舞会 v.伪装,化装;冒充
    1. 检查配置转发,没有则加入net.ipv4.ip_forward = 1

      sysctl -p
      vi /etc/sysctl.conf
      net.ipv4.ip_forward = 1
    1. 开启转发

      [root@nie nie]# firewall-cmd --add-masquerade --permanent
      success
      [root@nie nie]# firewall-cmd --query-masquerade
      no
      # 需要重新加载
      [root@nie nie]# firewall-cmd --reload
      success
      [root@nie nie]# firewall-cmd --query-masquerade
      yes 
    1. 重启docker
      systemctl restart docker

4. 再试docker内访问外网

[root@nie nie]# docker exec -it jenkins /bin/bash
bash-5.1# curl www.baidu.com

 百度一下,你就知道  

关于百度 About Baidu

©2017 Baidu 使用百度前必读  意见反馈 京ICP证030173号 

OK finished~

你可能感兴趣的:(docker上安装的jenkins容器内访问不了外网)