小知识:docke自定义网络之容器互联

目录 前言 –link 自定义网络 提问

前言

在前几期我们介绍了 容器间的互联可以使用 –Link 参数进行设置,这样可以在容器内不只访问ip,也可以访问对应设置的 域名。先温习下。操作之前先清除所有的容器。

link

?
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
# 清除所有容器
$root@VM-8-11-ubuntu:~# docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
88f8f241ca30
765ed1889bfa
$root@VM-8-11-ubuntu:~# docker run -it –name=mybusy02 -d busybox
82aff31e56f3913b3fa883a08ec95960eff88fc9977360a67264c0d53180844b
$root@VM-8-11-ubuntu:~# docker run -it –name mybusy –link mybusy02:mybusy-net -d busybox
b77e9762314f868518f799d3c572dec0b2ce13a684de072fb9f9e925135f6459
$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy-net
PING mybusy-net (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.131 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.069 ms
64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.069 ms
$root@VM-8-11-ubuntu:~# docker exec -it mybusy cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  mybusy-net 09a4b97fc09d mybusy02    # 我们发现在hosts文件中加入了mybusy02
172.17.0.3  c73be07d21fb

我们发现是互联了,但是如果mybusy02 想ping 通 mybusy 还需要一个–link。所以就很麻烦,而且官方也推荐我们不要使用 –link 这个参数了。

docker 0 不支持容器名访问接下来我们就到了今天的重头戏,自定义网络了。

%小知识:docke自定义网络之容器互联-猿站网-插图

自定义网络

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 主要涉及到的命令
$root@VM-8-11-ubuntu:~# docker network –help
Usage:  docker network COMMAND
Manage networks
Commands:
connect     Connect a container to a network
create      Create a network
disconnect  Disconnect a container from a network
inspect     Display detailed information on one or more networks
ls          List networks
prune       Remove all unused networks
rm          Remove one or more networks
Run docker network COMMAND –help for more information on a command.
# 这是默认的网络方式 brudge 就是docker 0的网桥
$root@VM-8-11-ubuntu:~# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
cf05ea05d3bd   bridge    bridge    local
0ab28e475dc6   host      host      local
e4c628cc77db   none      null      local

我们来使用create来创建自己的网桥网络。基础

?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# –driver 设置network类型  –subnet 设置子网  /16 = 255*255 个ip 减去0.0 和 255.255 约等于65535
$root@VM-8-11-ubuntu:~# docker network create –driver=bridge –subnet=192.168.0.0/16 my-net
1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970
root@VM-8-11-ubuntu:~# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
cf05ea05d3bd   bridge    bridge    local
0ab28e475dc6   host      host      local
1b668a5439b2   my-net    bridge    local
e4c628cc77db   none      null      local
# 查看网络信息
$root@VM-8-11-ubuntu:~# docker network inspect my-net
[
{
“Name”: “my-net”,
“Id”: “1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970”,
“Created”: “2021-12-01T09:47:21.410882291+08:00”,
“Scope”: “local”,
“Driver”: “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: {},
“Config”: [
{
“Subnet”: “192.168.0.0/16”
}
]
},
“Internal”: false,
“Attachable”: false,
“Ingress”: false,
“ConfigFrom”: {
“Network”: “”
},
“ConfigOnly”: false,
“Containers”: {},
“Options”: {},
“Labels”: {}
}
]

上面我们介绍了创建网络的方法以及查看的方法 接下来看看使用的方法

?
1
2
3
4
5
6
7
8
9
10
11
# 创建mybusy 容器设置 my-net网络
$root@VM-8-11-ubuntu:~# docker run -it –name mybusy –net=my-net -d busybox
180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272
# 创建mybusy02 容器设置 my-net网络
$root@VM-8-11-ubuntu:~# docker run -it –name mybusy02 –net=my-net -d busybox
3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7
# 在容器mybusy ping mybusy02 通了
$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy02
PING mybusy02 (192.168.0.3): 56 data bytes
64 bytes from 192.168.0.3: seq=0 ttl=64 time=0.110 ms
64 bytes from 192.168.0.3: seq=1 ttl=64 time=0.070 ms

这时我们发现 他们两互相ping通了,这就很完美了。再来看看下面的 my-net 的网络配置

?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
root@VM-8-11-ubuntu:~# docker network inspect my-net
[
{
“Name”: “my-net”,
“Id”: “1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970”,
“Created”: “2021-12-01T09:47:21.410882291+08:00”,
“Scope”: “local”,
“Driver”: “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: {},
“Config”: [
{
“Subnet”: “192.168.0.0/16”
}
]
},
“Internal”: false,
“Attachable”: false,
“Ingress”: false,
“ConfigFrom”: {
“Network”: “”
},
“ConfigOnly”: false,
“Containers”: {   # 这时我们发现 这两个容器已经加入到这个网络中了
“180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272”: {
“Name”: “mybusy”,
“EndpointID”: “12929182af47e619e3405cab9981ea1671a2bc31f77d3aa589ebcf2c912c12bc”,
“MacAddress”: “02:42:c0:a8:00:02”,
“IPv4Address”: “192.168.0.2/16”,
“IPv6Address”: “”
},
“3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7”: {
“Name”: “mybusy02”,
“EndpointID”: “61b08372535d751cee726fc01d4e300390e2a090dba20f1d21ba96385a7a621e”,
“MacAddress”: “02:42:c0:a8:00:03”,
“IPv4Address”: “192.168.0.3/16”,
“IPv6Address”: “”
}
},
“Options”: {},
“Labels”: {}
}
]

提问

在不同网络的配置下的容器可以互联吗?

答案是可以的。我们可以使用 docker network connect 指令,以下为操作步骤

?
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
28
29
30
31
32
33
34
35
36
37
38
# 首先查看当前存在同一个网络中mybusy mybusy02 两个容器
$root@VM-8-11-ubuntu:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
3c08d592537a   busybox   “sh”      8 minutes ago   Up 8 minutes             mybusy02
180fbc8b0462   busybox   “sh”      8 minutes ago   Up 8 minutes             mybusy
# 创建一个在默认网络中的 mybusy03
$root@VM-8-11-ubuntu:~# docker run -it –name mybusy03  -d busybox
a95b57c96f400ed44efffcc938bccce15830fa1ab5b55716261e4588c14429cb
# 查看当前的容器
$root@VM-8-11-ubuntu:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
a95b57c96f40   busybox   “sh”      21 seconds ago   Up 21 seconds             mybusy03
3c08d592537a   busybox   “sh”      8 minutes ago    Up 8 minutes              mybusy02
180fbc8b0462   busybox   “sh”      9 minutes ago    Up 9 minutes              mybusy
# 尝试从 mybusy ping mybusy03 发现是ping 不通的 因为不在同一网端中
$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03
ping: bad address mybusy03
# 这时我们查看docker network connect –help 命令查看
$root@VM-8-11-ubuntu:~# docker network connect –help
Usage:  docker network connect [OPTIONS] NETWORK CONTAINER
Connect a container to a network
Options:
–alias strings           Add network-scoped alias for the container
–driver-opt strings      driver options for the network
–ip string               IPv4 address (e.g., 172.30.100.104)
–ip6 string              IPv6 address (e.g., 2001:db8::33)
–link list               Add link to another container
–link-local-ip strings   Add a link-local address for the container
# 将mybusy03 加入到 my-net 网络中
$root@VM-8-11-ubuntu:~# docker network connect my-net mybusy03
# 这时我们再 ping 发现通了。是不是很神奇
$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03
PING mybusy03 (192.168.0.4): 56 data bytes
64 bytes from 192.168.0.4: seq=0 ttl=64 time=0.197 ms
64 bytes from 192.168.0.4: seq=1 ttl=64 time=0.087 ms

这时我们查看网络发现 mybusy03 已经加入到 my-net中去了。所以就可以ping 通了。

%小知识:docke自定义网络之容器互联-1猿站网-插图

到此这篇关于docke自定义网络之容器互联的文章就介绍到这了,更多相关docke容器互联内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_32798897/article/details/121647630

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:使用Docker构建开发环境的方法步骤( Windows和mac)

2023-3-12 17:57:04

建站知识

小知识:Docker快速部署SpringBoot项目介绍

2023-3-12 18:11:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索