Docker容器单机网络架构全攻略:从IP地址到路由的全面解析

Docker容器单机网络架构全攻略:从IP地址到路由的全面解析一 docker网络学习基础1.1 拉取 alpine 镜像1.2 运行容器1.3 进入容器终端1.4 连接到正在运行中的容器1.5 查看容器的ip地址1.6 查看容器的路由

Docker容器单机网络架构全攻略:从IP地址到路由的全面解析

一 docker网络学习基础

1.1 拉取 alpine 镜像

[superman@docker ~]$ docker pull alpine

示例:

[superman@docker ~]$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
59bf1c3509f3: Pull complete
Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[superman@docker ~]$
[superman@docker ~]$ docker images
REPOSITORY       TAG       IMAGE ID       CREATED       SIZE
httpd_superman   1.0       f0d394fd69d5   13 days ago   144MB
tomcat           latest   fb5657adc892   2 years ago   680MB
httpd            2.4       dabbfbe0c57b   2 years ago   144MB
httpd           latest   dabbfbe0c57b   2 years ago   144MB
alpine           latest   c059bfaa849c   2 years ago   5.59MB
[superman@docker ~]$

1.2 运行容器

[superman@docker ~]$ docker run -dit --name superman01 alpine

示例:

[superman@docker ~]$ docker run -dit --name superman01 alpine
a2804a814851c7a6316a36ae7c7801b253e133efe9fb5fac3e2999c838e12be1
[superman@docker ~]$
[superman@docker ~]$ docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
a2804a814851   alpine    "/bin/sh"   8 seconds ago   Up 7 seconds             superman01
[superman@docker ~]$

1.3 进入容器终端

进入容器终端并且保留容器终端的输入形式。

[superman@docker ~]$ docker exec -it superman01 ash

示例:

[superman@docker ~]$ docker exec -it superman01 ash
/ #
/ # ip add list
1: lo: mtu 65536 qdisc noqueue state UNKNOWN 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
8: eth0@if9: mtu 1500 qdisc noqueue state UP
  link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
      valid_lft forever preferred_lft forever
/ #
/ # exit
[superman@docker ~]$

1.4 连接到正在运行中的容器

[superman@docker ~]$ docker attach superman01

示例:

[superman@docker ~]$ docker attach superman01
/ #
/ # ip add list
1: lo: mtu 65536 qdisc noqueue state UNKNOWN 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
8: eth0@if9: mtu 1500 qdisc noqueue state UP
  link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
      valid_lft forever preferred_lft forever
/ #
/ # exit
[superman@docker ~]$

1.5 查看容器的ip地址

[superman@docker ~]$ ip add show

示例:

[superman@docker ~]$ docker exec -it superman01 ash          
/ #
/ # ip add show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN 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
10: eth0@if11: mtu 1500 qdisc noqueue state UP
  link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
      valid_lft forever preferred_lft forever
/ #
/ # exit
[superman@docker ~]$

1.6 查看容器的路由

[superman@docker ~]$ route -n

示例:

[superman@docker ~]$ docker attach superman01
/ #
/ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref   Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
/ #
/ # exit
[superman@docker ~]$


PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!


? 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


请使用浏览器的分享功能分享到微信等