陌小路的个人博客 陌小路的个人博客
首页
  • 技术专区

    • 面试
    • Vue
    • Electron
    • TypeScript
    • Serverless
    • GraphQL
  • 我的秋招之旅
  • 2019年终总结
Todo
收藏夹
关于作者
GitHub

陌小路

前端切图仔
首页
  • 技术专区

    • 面试
    • Vue
    • Electron
    • TypeScript
    • Serverless
    • GraphQL
  • 我的秋招之旅
  • 2019年终总结
Todo
收藏夹
关于作者
GitHub
  • Vue

  • React

  • 面试

  • Electron

  • Serverless

  • GraphQL

  • TypeScript

  • RxJS

  • 工程化

  • Webpack

  • Nestjs

  • WebRTC & P2P

  • Docker

    • Docker 储存之 tmpfs、bind-mounts、volume
    • Docker - 容器互联
      • link 方式
      • 建立网络
        • 相关命令
        • 实践
        • 网络模式介绍
    • Docker - 踩坑日记
  • Linux

  • Git

  • Svelte

  • 踩坑日记 & 小Tips

  • 其他

  • technology
  • Docker
陌小路
2022-03-20

Docker 容器互联

# docker 容器互联

有的时候我们会有这样的诉求,想要让两个容器之间能够进行相互通信,那这个时候我们应该怎么办呢?答案就是让两个容器互联呗。

# link 方式

这种方式也比较简单,直接用 --link=[container name]:[alias] 就好了,话不多说,上码。

第一步创建一个容器:

docker run -idt --name=container1 ubuntu
1

接下来再创建另一个容器来和他进行连接:

docker run -it --name=container2 --link=container1 ubuntu /bin/bash
1

这样我们就会进入到 container2 容器的 bash 命令行,默认这个 ubuntu 容器是没有 ping 命令的,如果我们想测试一下两个容器连通性可以先安装一下 ping 命令。

apt-get update
apt-get install iputils-ping 
1
2

安装完我们就可以快乐的执行 ping 命令了,那让我们来验证下吧:

root@5e09600af0ad:/# ping container1
PING container1 (172.17.0.2) 56(84) bytes of data.
64 bytes from container1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.713 ms
64 bytes from container1 (172.17.0.2): icmp_seq=2 ttl=64 time=0.106 ms
1
2
3
4

直接 ping 链接的容器名即可,从打印出来的日志我们可以看到的确 ping 通了。

# 建立网络

# 相关命令

  • 创建网络:docker network create
  • 连接网络:docker network connect
  • 断开连接:docker network disconnect
  • 查看网络详情:docker network inspect
  • 列出所有网络:docker network ls
  • 清理未使用的网络:docker network prune
  • 删除网络:docker network rm

# 实践

简单介绍了一下 docker 操作网络的一些命令之后,我们就可以开始着手实践一下了。

第一步创建一个网络:

docker network create local-network

然后我们创建一个容器来连接上这个网络:

docker run -idt --name=con1 --network=local-network ubuntu

然后再创建一个容器也连接上来

docker run -idt --name=con2 --network=local-network ubuntu

完事之后我们就可以在 con1 容器里 ping 一下 con2,你会发现非常丝滑的通了。

# 网络模式介绍

  • bridge
  • overlay

默认情况下,我们如果不使用 -d bridge 来设置网络的话,docker engine 会自动帮你创建一个 bridge 网络,然后连接到这个网络上来。

bridge 网络是在单台 Engine 安装上的隔离网络。如果想创建一个跨多个运行着 Engine 的 docker 主机,必须创建一个 overlay 网络。不像 bridge 网络,在创建 overlay 网络之前,需要一些预存在的条件。

使用 overlay 网络需要满足下面的这些条件:

  • 正常工作的 key-value 存储服务,比如 consul、etcd、zookeeper 等
  • 可以访问到 key-value 服务的主机集群
  • 集群中每台机器都安装并运行 docker daemon
  • 集群中每台机器的 hostname 都是唯一的,因为 key-value 服务是通过 hostname 标识每台主机的

docker 支持 overlay 网络的选项是:

  • --cluster-store
  • --cluster-store-opt
  • --cluster-advertise

虽然不是必须的,但推荐安装 docker swarm 来管理组成你的网络的集群。Swarm 提供了成熟的发现和服务器管理工具,可以帮助你更好地管理集群。

关于 docker 网络这块细节还没开始深入研究,慢慢补上。

编辑
上次更新: 2023/11/25, 4:11:00
Docker 储存之 tmpfs、bind-mounts、volume
Docker - 踩坑日记

← Docker 储存之 tmpfs、bind-mounts、volume Docker - 踩坑日记→

最近更新
01
github加速
01-01
02
在线小工具
01-01
03
Lora-Embeddings
11-27
更多文章>
Theme by Vdoing | Copyright © 2020-2024 STDSuperman | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式