撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>

需求

我们有两个容器,一个容器启动的后台服务,一个容器启动的mysql服务。后台服务必须知道mysql服务的IP地址是什么。但在开发的过程中,我们并不知道我们mysql数据库的ip地址是多少。

解决办法

我们可以给mysql一个名字,通过名字访问容器,名字是固定的。把第二个容器link到第一个容器上面,在第一个容器上面只需要通过name就可以访问了。

我们将上一节中的test2容器停止并且删除:

iie4bu@hostdocker:~$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d85b091d4deb        ubuntu:xenial       "/bin/bash -c 'while…"   4 hours ago         Up 4 hours                              test2
b21a9d817e25        ubuntu:xenial       "/bin/bash -c 'while…"   4 hours ago         Up 4 hours                              test1
iie4bu@hostdocker:~$ docker container stop test2
test2
iie4bu@hostdocker:~$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b21a9d817e25        ubuntu:xenial       "/bin/bash -c 'while…"   4 hours ago         Up 4 hours                              test1
iie4bu@hostdocker:~$ docker container rm test2
test2
iie4bu@hostdocker:~$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b21a9d817e25        ubuntu:xenial       "/bin/bash -c 'while…"   4 hours ago         Up 4 hours                              test1

我们新建test2容器,并将test2容器link到test1容器上面。

iie4bu@hostdocker:~$ sudo docker run -d --name test2 --link test1  ubuntu:xenial /bin/bash -c "while true; do sleep 3600; done"
--link的格式:
--link <name or id>:alias
其中,name和id是源容器的name和id,alias是源容器在link下的别名。

我们在test2中可以ping通test1的IP地址的。

root@7fe6f95d2992:/# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.094 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.062 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.062 ms
64 bytes from 172.17.0.2: icmp_seq=4 ttl=64 time=0.062 ms
64 bytes from 172.17.0.2: icmp_seq=5 ttl=64 time=0.059 ms

此外我们在test2中是不是可以ping通test1的名字呢?答案是可以的

root@7fe6f95d2992:/# ping test1
PING test1 (172.17.0.2) 56(84) bytes of data.
64 bytes from test1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from test1 (172.17.0.2): icmp_seq=2 ttl=64 time=0.061 ms
64 bytes from test1 (172.17.0.2): icmp_seq=3 ttl=64 time=0.063 ms
^C
--- test1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms

原因就是我们使用--link的方式,给test2添加了一个dns的一个记录。这样在test2中不需要知道test1的具体ip地址了。只需要知道名字就行。

然而我们在test1中是无法根据test2的名字ping通的。因为link是有方向的。

使用link的方式在生产环境中并不常见,后面介绍常见的解决办法。

从零开始学习docker(三)link相关推荐

  1. 从零开始学习jQuery (三) 管理jQuery包装集

    本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...

  2. [297]从零开始学习Docker

    这篇文章是我学习 Docker 的记录,大部分内容摘抄自 <<Docker - 从入门到实践>> 一书,并非本人原创. 学习过程中整理成适合我自己的笔记,其中也包含了我自己的实 ...

  3. 从零开始学习docker(二十)RoutingMesh--Ingress负载均衡

    我们知道容器之间的通信,例如上图中的10.0.9.3与10.0.9.5通信是通过overlay网络,是通过一个VXLAN tannel来实现的. 但是service和service之间通信是通过VIP ...

  4. 从零开始学习docker(十九)Swarm mode 集群服务间通信--RoutingMesh

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 在上一节中,我们介绍了通过service create部署了wordpress和mysql,我们发现了几个问题: ...

  5. 从零开始学习docker(十七)Swarm mode ---service

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 上一节中,我们学习了如何搭建一个swarm集群.本节中,我们介绍如何操作service. service,大家应 ...

  6. 从零开始学习docker(十六)Swarm mode 创建集群

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 这一节我们介绍如何搭建一个三节点的swarm集群.安装docker的同时,swarm已经内置了.所以不需要额外安 ...

  7. 从零开始学习docker(十五)Swarm mode 介绍

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 一般情况下,我们都在一台机器下部署容器,但实际情况下,应用如果只在一台机器上无法满足我们的需求,包含的容器比较多 ...

  8. 从零开始学习docker(十三)Docker Compose--scale

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 环境准备,上一节中的flask-redis项目,将项目启动: docker-compose up -d Star ...

  9. 从零开始学习docker(十一)介绍Docker Compose yml文件介绍

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 如果我们有一个App,他由多个container组成,那么这个App的维护会非常繁琐. 包括: 要从Docker ...

最新文章

  1. git 查看修改的代码行数,新增的文件以及删除的代码行数
  2. 仅用 4 小时,吃透“百度太行”背后硬科技!
  3. Spring Cloud微服务实战pdf
  4. C语言二级指针与典型应用(1)
  5. 虚机和实体服务器性能,虚机的性能主要与以下几方面有关
  6. 如何用计算机管理员权限,教你电脑使用代码添加管理员权限的详细教程
  7. “use strict” 严格模式使用(前端基础系列)
  8. linux和windows下icmp的区别
  9. 【在线课件制作软件】Focusky教程 | 导出PDF并打印
  10. 网络知识:路由器常见故障分析及处理方法
  11. 深圳华睿彩印高温玻璃打印机介绍
  12. CSS超链接标记大全
  13. c语言如何反复执行一段程序,C语言中重复执行程序的问题
  14. android移动拼图小游戏的图片,利用ViewDragHelper轻松实现Android拼图游戏
  15. python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数... - 小黑电脑...
  16. 【网络编程】Linux tcpdump命令详解---编辑中
  17. 2022出海拉美:秘鲁电商市场现状及发展前景
  18. 鸟人的Android揭秘(5)——搭建Android SDK开发环境(一)
  19. 发那科2021参数_发那科系统FANUC:参数修改。
  20. 教学信息管理系统c语言编程,C语言课程设计【学院教学信息管理系统】.doc

热门文章

  1. 用户 'sa' 登录失败。 (Microsoft SQL Server,错误: 18456)
  2. C#和Java详细描述
  3. Tensorflow在python3.7版本的运行并且在pycharm安装tensorflow(亲测)
  4. GitChat · 大数据 | 一步一步学习大数据:Hadoop 生态系统与场景
  5. mysql使用索引为什么查询速度变快很多?
  6. Vue的报错Echarts Cannot read property ‘init‘ of undefined
  7. CSS3的flex布局:方向 换行 对齐 顺序
  8. JS的window-location
  9. mysql 图形插件_对我来说数据库图形化管理工具用这个足够了
  10. 虾皮如何注册店铺_虾皮跨境电商怎样注册店铺?做(shopee)虾皮电商靠谱吗