前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >发现Docker的IP地址

发现Docker的IP地址

作者头像
Hero
发布于 2018-01-04 02:27:59
发布于 2018-01-04 02:27:59
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

Docker有许多不同的版本 - boot2docker,Windows ,Mac的Docker,以及Linux的本地版本。

您可以使用测试该实用程序docker run --net=host codenvy/che-ip。这将下载Eclipse Che IP工具。它大小约为4.8 MB。

代码语言:txt
AI代码解释
复制
$ 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脚本并运行它作为命令的一部分。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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网络接口。我们将使用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#如果NETWORK_IF尚未设置,则搜索它

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 distrubtions正在为它们的接口提供专门的名字,比如ensp0s3CentOS。在这种情况下,Docker通常绑定到docker0接口。

代码语言:txt
AI代码解释
复制
#如果NETWORK_IF仍未设置,则搜索docker0

if test -z ${NETWORK_IF}; then 
    if [ -d "/sys/class/net/docker0" ]; then 
        NETWORK_IF=docker0" 
    fi
fi

代码语言:javascript
代码运行次数:0
运行
复制

否则,如果这个测试仍然失败,那么就不可能确定当前的接口。对于我们搜索Docker IP的实用程序,当我们获得退出值时,1我们将与管理员进行交互以了解更多信息。

Florent Benoit为此工作做了很大的工作。Dockerfile和相关脚本的源代码在Che的GitHub仓库上

相关的参考资料:

Docker入门

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
发现Docker的IP地址
本文介绍了如何使用Docker容器运行Eclipse Che,并探讨了Docker容器的IP地址问题。首先介绍了Docker容器的使用,然后说明了如何使用Docker容器运行Eclipse Che,并提到了Docker容器的IP地址获取方式。具体包括使用boot2docker、Windows/Mac的Docker和Linux的本地版本,通过编写Dockerfile文件并运行命令来获取IP地址。如果Docker容器使用了--net=host参数,则可以使用主机的网络配置来获取IP地址。如果Docker容器没有绑定一个可用的网络接口,可以搜索docker0接口来获取IP地址。如果Docker容器没有绑定任何网络接口,则可以使用主机的网络配置来获取IP地址。
花落花飞去
2017/12/27
2K0
docker浅入深出4
带着我们就这些问题,我们来学习一下docker的网络模型,最后我会通过抓包的方式,给大家演示一下数据包在容器和宿主机之间的转换过程。
萧晚歌
2020/09/04
9470
docker浅入深出4
Docker 使用指南 (三)—— 网络配置
该文介绍了Docker网络配置的相关内容。文章首先介绍了Docker网络的基本配置,包括默认桥接、自定义网络、端口映射和容器网络模式等。然后详细讲解了各种网络模式的配置方法和注意事项,包括桥接模式、host模式、other container模式和none模式。
田飞雨
2016/07/20
7.7K0
Docker 使用指南 (三)—— 网络配置
走进Docker的世界--(库存学习笔记)
介绍docker的前世今生,了解docker的实现原理,以Django项目为例,带大家如何编写最佳的Dockerfile构建镜像。通过本章的学习,大家会知道docker的概念及基本操作,并学会构建自己的业务镜像,并通过抓包的方式掌握Docker最常用的bridge网络模式的通信。
误入歧途
2024/05/08
2170
docker网络
我们在使用 docker run 创建 Docker 容器时,可以用--net 选项指定容器的网络模式,Docker 有以下 4 种网络模式:
cuijianzhe
2022/06/14
6480
docker网络
Docker入门——网络相关
某次在试图从容器内访问到本地的数据库时,发现在本机上并没有 docker0 这个网桥。学习了一波 Docker 网络相关的知识后作出了以下总结。
cocoon_yh
2019/09/09
1.4K0
Docker入门——网络相关
docker复制文件到宿主机_下面哪几个属于docker网络模式
此种方式是将容器的某个端口映射到宿主机的某个端口,其它主机访问容器提供的服务需要通过宿主机的IP进行访问:
全栈程序员站长
2022/09/25
8140
docker复制文件到宿主机_下面哪几个属于docker网络模式
037.集群网络-Docker网络实现
在Kubernetes管理模式下通常只会使用bridge模式,如下介绍在bridge模式下Docker是如何支持网络的。
木二
2020/03/24
9030
037.集群网络-Docker网络实现
Docker容器网络-基础篇
Docker的技术依赖于Linux内核的虚拟化技术的发展,Docker使用到的网络技术有Network Namespace、Veth设备对、Iptables/Netfilter、网桥、路由等。接下来,我将以Docker容器网络实现的基础技术来分别阐述,在到真正的容器篇章节之前,能形成一个稳固的基础知识网。
民工哥
2020/09/17
2.1K0
Docker容器网络-基础篇
Linux 下实践 VxLAN:虚拟机和 Docker 场景
在上篇文章中,我们已经探讨了 VxLAN 的概念和基本原理,本文就基于 Linux 对 VxLAN 做一个实践。如果有相关概念不懂的可以先看那篇文章。
Linux云计算网络
2019/07/30
3K0
Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求。容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信。下面将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker。前面已经在Docker容器学习梳理--基础知识(2)这一篇中详细介绍了Docker的网络配置以及pipework工具。 docker单主机容器通信 基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,
洗尽了浮华
2018/01/23
3.5K0
Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
Docker网络,网络工程师还不赶紧收藏!
Evth-pair就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连.正因为这个特性,evth-pair 充当一个桥梁,连接各种虚拟网络设备。
全栈程序员站长
2022/09/09
9000
Docker网络,网络工程师还不赶紧收藏!
7-docker容器的网络通信
Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,多host网络又分为原生网络和第三方网络,如下:
jackxiao
2021/11/16
6520
5.Docker底层实现原理了解
通过前面的学习,我们基本掌握了Docker的配置使用,现在我们以 Docker 基础架构来探究Docke底层的核心技术,简单的包括:
全栈工程师修炼指南
2022/09/28
1.2K0
5.Docker底层实现原理了解
docker_基础_3
   docker目前采用的是标准的C/S架构,client和service即可以运行在一台机器上,也可以在不同机器上通过socker和RESTful API来进行通信。
py3study
2020/01/08
6480
Docker容器跨主机通信之:直接路由方式
直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包;此外,如果不同子网之间要进行通信,需要额外的路由机制。
py3study
2020/02/20
16.9K6
云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
  前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心、Docker实战、DockerCompose、Harbor以及Swarm。欢迎关注收藏哦
用户4919348
2022/01/06
6750
云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
5张图诠释了容器网络
使用容器总是感觉像使用魔法一样。对于那些理解底层原理的人来说容器很好用,但是对于不理解的人来说就是个噩梦。很幸运的是,我们已经研究容器技术很久了,甚至成功揭秘容器只是隔离并受限的 Linux 进程,运行容器并不需要镜像,以及另一个方面,构建镜像需要运行一些容器。
IT运维技术圈
2022/06/26
1K0
5张图诠释了容器网络
研究pipework
很早以前就听说过pipework,据说面对一些复杂的网络配置场景,docker自带的网络模式就有些力不从心了,很多人都在用pipework。今天终于能够抽出时间研究一下它。 docker默认支持的网络模式 除了overlay网络外,docker默认支持4种网络模式,如下: host模式,使用–net=host指定,容器和宿主机共用一个Network Namespace。 container模式,使用–net=container:NAME_or_ID指定,容器和已经存在的一个容器共享一个Network Nam
jeremyxu
2018/05/10
1.6K0
Docker 网络模式详解及容器间网络通信
Docker本身在它创建之初,它就有自己的网络驱动器,叫Container Network Manager,简称CNM。本身这个CNM会支持多种模式,本节来看一看这些模式的区别,然后去了解一下,要让一个容器网络真正地配置好,让容器真正地模拟成一个虚拟机,我们最终要做哪些配置。
贾维斯Echo
2024/03/20
2.6K0
Docker 网络模式详解及容器间网络通信
相关推荐
发现Docker的IP地址
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文