专栏首页发现Docker的IP地址

发现Docker的IP地址

我们用Eclipse Che编写了很多使用Docker容器的小程序。它们占用空间小,易移植,可以在许多不同的操作系统上运行,而无需用户安装额外的软件。

我们的许多小程序需要创建和管理Docker容器,所以当我们的代码在Docker容器中运行时,需要与管理容器的Docker守护进程交互。这意味着我们需要它的IP地址。

Docker有许多不同的版本 - boot2docker,Docker for Windows / Mac

,以及Linux的原生版本。

可以使用docker run --net=host codenvy/che-ip运行程序

。这将下载Eclipse Che IP工具。它大小约为4.8 MB。

$ docker run — net=host codenvy/che-ip
192.168.65.2

$ docker images
REPOSITORY          TAG    IMAGE ID     CREATED     SIZE
codenvy/che-ip      latest a6bbac2f56dc 5 weeks ago 4.8 MB

Dockerfile很简单 - 它添加一个shell脚本,并将其作为命令的一部分运行。

FROM alpine:3.4 
COPY getip.sh /bin/getip.sh 
CMD [“/bin/getip.sh”]

执行的是一个简单的脚本。它首先确定docker绑定的网络接口,然后使用该网络接口来获取IP地址。鉴于特定的网络接口,Docker容器使用该ip实用程序来获取主机的IP地址(请注意,--net=host允许我们使用主机的网络配置而不是容器的):

ip a show “${NETWORK_IF}” | grep ‘inet' | cut -d/ -f1 | awk ‘{print $2}'

Docker的不同实现将自己绑定到不同的网络接口。有些是确定的,有些则不是。所以,我们需要根据底层主机的配置来确定适当的网络接口。

如果安装是Docker for Windows或Docker for Mac,那么我们保证Docker运行在eth0

if uname -r | grep -q ‘moby’; then 
  if [ -d “/sys/class/net/eth0” ]; then 
      NETWORK_IF=eth0 
  fi
fi

否则,检查会稍有点麻烦。在这种情况下,Docker可以绑定到不同的以太网接口。我们知道Docker运行在非虚拟机管理程序虚拟机上,所以我们搜索/sys/class/net并遍历所有返回的值,找到绑定到eth的第一个接口,这就是我们需要的Docker网络接口。

# If the NETWORK_IF has not been set, then search for it
if test -z ${NETWORK_IF}; then 
  for i in $(ls /sys/class/net); do 
    if [ ${i:0:3} = eth ]; then 
      NETWORK_IF=${i} 
    fi 
  done
fi

此外,有可能这两个函数都没有返回一个有效的网络接口,那是因为一些Linux 发行版本为它们的接口提供专门的名字,比如CentOS使用的是ensp0s3。在这种情况下,Docker通常绑定到docker0接口。

# If the NETWORK_IF still not set, then search for docker0
if test -z ${NETWORK_IF} then 
  if [ -d “/sys/class/net/docker0” ]; then 
    NETWORK_IF=”docker0" 
  fi
fi

如果这样仍然失败,那么就不可能确定当前的接口。对于我们用以检查Docker IP的小程序,当我们获得退出值1时,我们会联系管理员以了解更多信息。

感谢Florent Benoit为这个小程序付出了巨大的工作。Dockerfile和相关脚本的源代码在Che的GitHub仓库上

相关的参考资料:

Docker入门

本文的版权归 Oraisdy 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 发现Docker的IP地址

    我们使用Eclipse Che在Docker上编写了很多实用程序。它们占用空间小,便于携带,可以在许多不同的操作系统上运行,而无需用户安装额外的软件。

    人工智能资讯小编
  • 发现Docker的IP地址

    使用Eclipse Che,我们使用Docker容器编写了很多实用程序。它们占用空间小,便于携带,可以在许多不同的操作系统上运行,而无需用户安装额外的软件。

    Hero
  • IP地址中的保留地址

    根据用途和安全性级别的不同,IP地址还可以大致分为两类:公共地址和私有地址。公用地址在Internet中使用,可以在Internet中随意访问。私有地址只能在内...

    似水的流年
  • Centos7.5配置IP地址的实现

    cd /etc/sysconfig/network-scripts/,找到配置文件为ifcfg-em2

    砸漏
  • 在Linux中发现IP地址冲突的方法

    Linux 下出现 IP 冲突,是不会像 Windows 那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在 VM 虚拟机里面安装了 4 个 redh...

    张戈
  • 如何在Linux中发现IP地址冲突

    你们都知道什么是IP地址,是吧?它们被分配给网络上的设备来代表它们。它们通过DHCP服务器分配并且会经常改变。现在有两种IP地址。动态的一种会经常改变(几天一次...

    小小科
  • 如何在Linux中发现IP地址冲突

    你们都知道什么是IP地址,是吧?它们被分配给网络上的设备来代表它们。它们通过DHCP服务器分配并且会经常改变。现在有两种IP地址。动态的一种会经常改变(几天一次...

    小小科
  • 利用腾讯的ip地址库做ip地址定位

    腾讯的这个还是相对比较准确的。因为腾讯每个QQ用户发现自己匹配的地理位置信息不准确都可以提交更正的http://fw.qq.com/ipaddress 调用: ...

    张善友
  • Tor安全研究:发现客户端IP地址

    去年2月,我的“Tor洋葱路由服务”(Onion Service)遭受了一段时间的分布式拒绝服务攻击(DDoS),我花了好长时间对攻击进行了分析,并制订了缓解和...

    FB客服
  • Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法。分享给大家供大家参考,具体如下:

    砸漏
  • 域名转化到IP地址的实现

    在linux中,有一些函数可以实现主机名和地址的转化,最常见的有gethostbyname()、gethostbyaddr()等,它们都可以实现IPv4和IPv...

    用户1621453
  • Java实现解析IP地址的方法,给出一串数字,生成正确的IP地址

    给定一个只包含数字的字符串,通过方法返回所有可能的有效的IP地址组合。 例如:给出“25525511135”,返回(“255.255.11.135”、“255....

    用户1289394
  • 计算机网络之网络层1 IP地址与MAC地址的关系2 ARP协议的作用,地址解析的过程3 IP地址的分类,每类地址的范围,给定IP地址能够判断属于哪一类4 IP数据报分片IP编址有类IP地址5 IP子网

    JavaEdge
  • 查询ip地址的方法有哪些?ip地址有什么用处?

    对于网络技术人员来讲,他们都会对ip地址感到熟悉,因为在进行计算机以及相关智能设备维护的过程中,了解这些设备的ip地址是一件有必要的事情,无论是接入因特网还是局...

    用户8739990
  • 本机ip地址的概念是什么 ip地址有什么作用

    在人们在使用互联网的相关业务时,常常会浏览到关于网络犯罪的网络新闻,警察通过追踪犯罪分子的ip地址来进行犯罪分子的抓捕。其中很多用户对其不甚了解,那么今天通过相...

    用户8739405
  • IP地址解析的规则

    《sqlplus登录缓慢的解决》文章中出现问题的场景,是配置了/etc/resolv.conf,但是未配置/etc/hosts,为此测试了两种方式。

    bisal
  • IP地址的分配过程

    IP地址的分配一般分为俩种,手动配置和动态获取。服务器主机一般采用手动配置,而客户端主机(比如我们的手机)采用动态获取。原因有以下几个: 1、 客户主机比服务...

    用户7557625
  • python实现局域网ip地址扫描

    从知道python开始,我的视线里就没缺少过他。尤其是现如今开发语言大有傻瓜化的趋势。而作为这一趋势的领导,脚本语言就显得格外亮眼。不管是python还是rub...

    py3study
  • 测试开发之网络篇-IP地址

    IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。这里介绍一下目前广泛使用的IPv4版...

    陈琦聊测试

扫码关注云+社区

领取腾讯云代金券