0%

docker之网络

超文本,英语:Hypertext,是一种可以显示在电脑显示器或其他电子设备的文本,其中的文字包含有可以链接到其他字段或者文档的超链接,允许从当前阅读位置直接切换到超链接所指向的文字。超文本文档通过超链接相互链接,超链接通常通过鼠标点击、按键设置或触屏来点阅。

一、概念

      Docker容器和服务如此强大的原因之一是可以将它们连接在一起,或将它们连接到非Docker工作负载。Docker容器和服务甚至不需要知道它们已部署在Docker上,也不必知道它们的对等对象是否也是Docker工作负载。无论你的Docker主机运行Linux,Windows还是两者结合,您都可以使用Docker以与平台无关的方式管理它们。安装Docker后,默认会创建三种网络类型:bridge、host、none,可通过docker network ls查看。同时它还支持别的网络模式,如overlay、macvlan以及第三方Network plugins,另外它还支持用户自定义模式。

  1. bridge:桥接网络,默认情况下启动的Docker容器都是使用bridge模式。

    • Docker安装时创建的桥接网络,每次容器重启时会按照顺序获取对应的IP地址,这样就导致同一个容器IP地址会随着重启而变化
    • 一般Docker会使用172.17.0.0/16这个网段,并将172.17.42.1/16分配给docker0网桥
    • 在主机上使用ifconfig命令是可以看到docker0的,可以认为它是网桥的管理端口,在宿主机上作为一块虚拟网卡使用
  2. host: 主机网络,使用--network=host,和宿主机共用一个Network Namespace,IP和端口。

    • 例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。
  3. none:无指定网络,使用--network=none,不为容器进行任何网络配置如网卡、IP、路由等,需要后期设置。

二、测试bridge模式

  1. 创建并运行docker run -it --name centos --ip 192.168.10.10 centos /bin/bash

  2. 查看ipip address,发现并不是自己指定的192.168.10.10

  3. 退出并保持运行状态control + p && control + q

    • 对应退出运行状态exit,启动并进入容器docker start -ia container

使用exec方式进入容器,exit后容器还保持运行状态

使用attach方式进入容器,exit容器退出运行状态

使用start启动并进入容器,exit容器退出运行状态

  1. 进入容器docker exec -it container /bin/bash
    • docker attach container
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:22:34 2019
OS/Arch: darwin/amd64
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:29:19 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683

三、用户自定义网络

  1. 创建自定义网络,指定网段docker network create --subnet=172.18.0.0/16 customize_network

  2. 查看网络类型docker network ls

1
2
3
4
5
NETWORK ID          NAME                DRIVER              SCOPE
840254f48077 bridge bridge local
e2ea1599e755 customize_network bridge local
4d2ccd0cc247 host host local
636ee274a7ad none null local
  1. 创建容器并指定ipdocker run -itd --name custom_container --net customize_network --ip 172.18.0.122 centos /bin/bash

  2. 进入容器docker exec -it custom_container /bin/bash

  3. 查看ipip addr

四、参考

  1. 官网