Docker----容器名互联link技术及其本质

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker----容器名互联link技术及其本质

(1)创建名centos1的docker

docker run -it --name centos1 centos

创建后查看ip,如下:172.17.0.3

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos1 centos
[root@52a8e3445ba0 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
210: eth0@if211: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@52a8e3445ba0 /]#

(2)创景名centos2 的docker

docker run -it --name centos2 centos

创建后查看ip,如下:172.17.0.5

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos2 centos
[root@ffd80ec46a5d /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
212: eth0@if213: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@ffd80ec46a5d /]#

(3)在centos2中分别使用ip和docker名pingcentos1

如下,可以发现,centos2的容器可以ping通centos1的ip,但是无法ping通centos1的容器名

[root@ffd80ec46a5d /]# ping 172.17.0.3 -c 3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.095 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.085 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.073 ms

--- 172.17.0.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.073/0.084/0.095/0.011 ms
[root@ffd80ec46a5d /]#
[root@ffd80ec46a5d /]#
[root@ffd80ec46a5d /]# ping centos1 -c 3
ping: centos1: Name or service not known
[root@ffd80ec46a5d /]#

(4)使用--link 创建名centos3的容器,关联centos2

docker run -it --name centos3 --link centos2 centos

创建后查看ip,如:172.17.0.6

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos3 --link centos2 centos
[root@3cec093832ce /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
214: eth0@if215: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.6/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@3cec093832ce /]#

(5)在centos3 的容器中分别ping容器centos2的ip和容器名

如下可以发现,此时centos3的容器中可以通过centos2的容器名ping通,这就是--link技术

[root@3cec093832ce /]# ping 172.17.0.5 -c 3
PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.102 ms
64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.065 ms
64 bytes from 172.17.0.5: icmp_seq=3 ttl=64 time=0.062 ms

--- 172.17.0.5 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.062/0.076/0.102/0.019 ms
[root@3cec093832ce /]#
[root@3cec093832ce /]#
[root@3cec093832ce /]# ping centos2 -c 3
PING centos2 (172.17.0.5) 56(84) bytes of data.
64 bytes from centos2 (172.17.0.5): icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from centos2 (172.17.0.5): icmp_seq=2 ttl=64 time=0.071 ms
64 bytes from centos2 (172.17.0.5): icmp_seq=3 ttl=64 time=0.062 ms

--- centos2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.062/0.069/0.075/0.008 ms
[root@3cec093832ce /]#

(6)容器--link技术的作用

--link技术可以通过容器名访问容器,这就解决了每次启动容器的时候容器的ip都是随机生成的而访问的时候不需要关注随机改变的ip的问题

(7)容器--link技术的本质

在centos3容器中执行如下命令,可以看到--link技术的本质就是在hosts文件中对ip地址进行了设置,这样通过访问容器名的时候自动解析到对应的ip地址

[root@3cec093832ce /]# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.5      centos2 ffd80ec46a5d
172.17.0.6      3cec093832ce
[root@3cec093832ce /]#
目录
相关文章
|
14天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
160 93
|
16天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
99 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
15天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
41 17
|
15天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
84 12
|
16天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
84 11
|
域名解析 网络协议 应用服务中间件
Docker——--link实现容器互联
Docker——--link实现容器互联
964 0
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
271 77
|
27天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
115 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
27天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈