本文共 4190 字,大约阅读时间需要 13 分钟。
目录
busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用。
[root@iZ2vceej7yes1abpm7yec2Z ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEpython 3.6 1297140c6dd2 9 days ago 874MBubuntu latest d70eaf7277ea 2 weeks ago 72.9MBbusybox latest f0b02e9d092d 4 weeks ago 1.23MB
看到了吧,busybox 这个images只有1.23MB, 这一般用于嵌入式linux系统。
详情参考:
在busybox的sh下运行一个sleep脚本
1、busybox test1
docker run -d busybox /bin/sh -c "while true; do sleep 3600; done"
2、busybox test2
~]# docker run -d --name test2 busybox /bin/sh -c "while true; do sleep 3600; done"
~]# docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES51ea3cd11968 busybox "/bin/sh -c 'while t…" 5 seconds ago Up 5 seconds test24209ba002f3d busybox "/bin/sh -c 'while t…" 3 minutes ago Up 3 minutes gallant_ramanujan
在container test2中ping 另外一个container
docker exec 在运行中的container中查询ip
~]# docker exec 51ea ip a1: lo:mtu 65536 qdisc noqueue 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 forever144: eth0@if145: mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever[root@iZ2vceej7yes1abpm7yec2Z ~]# [root@iZ2vceej7yes1abpm7yec2Z ~]# docker exec 420 ip a1: lo: mtu 65536 qdisc noqueue 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 forever142: eth0@if143: mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever
两个容器相互ping,可以ping通
~]# docker exec 51e ping 172.17.0.3PING 172.17.0.3 (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.093 ms64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.065 ms64 bytes from 172.17.0.3: seq=2 ttl=64 time=0.070 ms^C[root@iZ2vceej7yes1abpm7yec2Z ~]# [root@iZ2vceej7yes1abpm7yec2Z ~]# docker exec 420 ping 172.17.0.4PING 172.17.0.4 (172.17.0.4): 56 data bytes64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.083 ms64 bytes from 172.17.0.4: seq=1 ttl=64 time=0.071 ms64 bytes from 172.17.0.4: seq=2 ttl=64 time=0.068 ms
这是如何实现的呢?请看第三节
~]# ip netns add net1[root@iZ2vceej7yes1abpm7yec2Z ~]# ip netns add net2[root@iZ2vceej7yes1abpm7yec2Z ~]# [root@iZ2vceej7yes1abpm7yec2Z ~]# ip netns listnet2net1
上面创建的这两个容器都有自己的netns,通过docker exec查看ip和端口。linux中也有同样的命令。
~]# ip netns exec net1 ip a1: lo:mtu 65536 qdisc noop state DOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
执行ip link
~]# ip netns exec net1 ip link1: lo:mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
只有一个link,是本地回环口。
稍后会绑定一个link 和另外一个netns互通。
启动l0端口
~]# ip netns exec net1 ip link set dev lo up[root@iZ2vceej7yes1abpm7yec2Z ~]# [root@iZ2vceej7yes1abpm7yec2Z ~]# ip netns exec net1 ip link1: lo:mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
状态现在变为unknown,这和本地的回环口一样,只有两端都连接时,例如eth0会和mac的虚拟端口连接起来,必须是一对才会显示up。
通过docker network inspect 可以看到bridge上的连接就是0.4这个ip地址。
本地的ip a结果分析
docker container 51ea3cd11968想要连接到docker0 bridge这个namespace.
转载地址:http://zmhqj.baihongyu.com/