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 /]#
目录
相关文章
|
2天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
19 6
|
2天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
13 5
|
2天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
18 3
|
2天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
20 3
|
2天前
|
存储 安全 数据安全/隐私保护
Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。
在数字化时代,Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。本文探讨了 Docker 应用的备份与恢复策略,涵盖备份的重要性、内容、方法及常见工具,制定备份策略,恢复流程及注意事项,并通过案例分析和未来趋势展望,强调备份与恢复在保障应用安全中的重要性。
13 2
|
7天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
34 5
|
6天前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
5天前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
17 0
|
17天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
59 2
|
11天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。