在Docker中自定义网络配置,实现容器与主机的连通性
【实验步骤】
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes
[root@localhost ~]# systemctl restart network
[root@localhost ~]# mkdir /opt/centos -p
[root@localhost ~]# mount /dev/cdrom /opt/centos/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls -l \\查看是否有以下文件centos,Packages.tar.gz ,postgres.tar
total 472742
drwxrwxr-x. 8 root root 2048 Nov 26 2018 centos
-rw-r--r--. 1 root root 108512388 Jun 2 17:51 Packages.tar.gz
-rw-r--r--. 1 root root 375567360 Jun 2 17:52 postgres.tar
[root@localhost opt]# tar -zxvf Packages.tar.gz
[root@localhost opt]# ls -l
total 472758
drwxrwxr-x. 8 root root 2048 Nov 26 2018 centos
drwxr-xr-x. 3 root root 12288 Mar 8 2020 Packages
-rw-r--r--. 1 root root 108512388 Jun 2 17:51 Packages.tar.gz
-rw-r--r--. 1 root root 375567360 Jun 2 17:52 postgres.tar
[root@localhost opt]#
[root@localhost opt]# vi /etc/yum.repos.d/CentOS-Base.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[Packages]
name=Packages
baseurl=file:///opt/Packages
gpgcheck=0
enabled=1
使用yum安装docker容器
[root@localhost opt]# yum -y install docker-io
启动docker容器服务
[root@localhost opt]# systemctl start docker
查看当前docker状态
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
上传一个镜像 postgres.tar
将镜像上传docker容器
[root@localhost opt]# docker load -i postgres.tar
再次查看当前docker状态
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
training/postgres latest 1ca72400eeb5 9 years ago 364.6 MB
[root@localhost opt]#
用户使用--net=none后,可以自行配置网络,让容器达到跟平常一样具有访问网络的权限。通过这个过程,可以了解Docker配置网络的细节。
1 首先,启动一个/bin/bash容器,指定--net=none参数。
|
2 重新打开一个远程连接在本地主机查找容器的进程id,并为它创建网络命名空间。
[root@localhost ~]# docker ps -a //用于查找docker容器的name
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7792787a5b3b training/postgres "/bin/bash" 43 seconds ago Up 42 seconds jolly_pike
|
3 检查桥接网卡的IP和子网掩码信息。
|
4 创建一对veth pair接口A和B,绑定A到网桥docker0,并启用它。
|
5 将B放到容器的网络命名空间,命名为eth0,启动它并配置一个可用IP(桥接网段)和默认网关。
|
以上,就是Docker配置网络的具体过程。
查看更改后的容器IP。
|
测试连通性
root@7792787a5b3b:/# ping -c 4 192.168.50.128
PING 192.168.50.128 (192.168.50.128) 56(84) bytes of data.
64 bytes from 192.168.50.128: icmp_seq=1 ttl=64 time=0.315 ms
64 bytes from 192.168.50.128: icmp_seq=2 ttl=64 time=0.081 ms
64 bytes from 192.168.50.128: icmp_seq=3 ttl=64 time=0.080 ms
64 bytes from 192.168.50.128: icmp_seq=4 ttl=64 time=0.164 ms
--- 192.168.50.128 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.080/0.160/0.315/0.095 ms
root@7792787a5b3b:/#
[root@localhost ~]# ping -c 4 172.17.42.99
PING 172.17.42.99 (172.17.42.99) 56(84) bytes of data.
64 bytes from 172.17.42.99: icmp_seq=1 ttl=64 time=0.326 ms
64 bytes from 172.17.42.99: icmp_seq=2 ttl=64 time=0.073 ms
64 bytes from 172.17.42.99: icmp_seq=3 ttl=64 time=0.070 ms
64 bytes from 172.17.42.99: icmp_seq=4 ttl=64 time=0.072 ms
--- 172.17.42.99 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.070/0.135/0.326/0.110 ms
[root@localhost ~]#
【步骤解释】
通过这个实验,您可以了解到在Docker中如何配置网络,并自行配置容器的网络连接,使其具有访问网络的权限。