DOCKER-1-4-容器网络

1.使用ip命令,查看相关包是否安装,没有安装的话进行安装(这里不操作演示了)。通过netns添加r1和r2两个网络命名空间,但此时是没有网卡的。通过exec在r1中执行ifconfig指令,没有输出,因为没有网卡。加-a参数查看r1和r2,只有回环测试。

2.添加一堆veth设备veth1.1和veth1.2,veth设备是成对出现的。将其中一个设备veth1.2挪到网络命名空间r1中。再次查看宿主机node3发现只有设备veth1.1。同时,可以把r1空间中的veth1.2重命名为eth0。注意:这时的设备是还没有激活的。给宿主机上的设备veth1.1设置网络地址并激活。给网络命名空间r1中的eth0设置网络地址并激活。veth1.1尝试与eth0进行ping通讯,可以通讯。

3.将veth1.1移到r2空间,默认是没有激活的状态。为veth1.1设置ip地址并激活。确认状态后,尝试ping r1空间中的eth0,发现网络是通的。

4.运行一个容器busybox-t1,镜像busybox:latest,注意默认是latest,指令默认是/bin/sh。--rm参数可以设置退出时自动删除容器。通过--network 指明网络为bridge,这个和不指明时一样的,因为默认就是bridge。如果使用none,则不会创建网络,此时为封闭式容器。

5.再次创建一个容器,查看主机名,发现时容器的id,退出容器。再次创建容器并使用-h参数来指定主机名。进入容器,查看本地解析,发现本机可以解析。查看路由解析,发现使用的是宿主机的路由解析。尝试解析百度的网址,发现可以解析。

6.通过-dns 可以指明解析dns,通过--dns-search可以指明搜索域,--add-host可以增加主机解析。

7.使用带httpd服务的镜像创建容器myweb。可以通过内部网络访问。通过-p参数来指定80端口进行对外发布。

8.查看宿主机的网络设备信息。通过网络地址过滤来查看容器的80端口转换到宿主机的32768端口。尝试通过浏览器访问宿主机的32768端口,被转发到容器的80端口,访问到网页。关闭容器后,相关的转发也跟着被关闭。

9.再次把容器run起来。通过port查看指定容器的映射。可以发现将容器的80端口转发到所有宿主机地址的32769端口。关闭容器后,再次通过-p参数指定转发到宿主机的一个地址。通过port查看端口转发,可以看见转发到指定地址。也可以指定将容器的80端口转发到宿主机所有地址的80端口。也可以指定主机地址和端口进行端口转发。

10.用busybox起一个容器b1和一个容器b2,发现网络是分开的。关掉b2,增加--network参数container b1再次启动容器b2。再次查看网络设备信息,b1和b2共用一个网络地址。但此时文件目录仍然是隔离的,可以在b1下创建测试目录,在b2下查看来验证。在b2上起httpd服务,确定80端口进行监听,然后在b1上进行本地访问,发现可以访问。

11.再次起容器b2,将网络类型选择为host,在容器起httpd服务,通过物理机网络访问。

12.将所有容器关闭,关闭docker服务。编辑daemon.json文件,增加bip参数值,会将默认的172.17.0.0/16网段地址替换为指定地址。启动docker服务,通过ifconfig查看确认。

13.创建一个类型为bridge的网络mybr0,用这个网络运行容器t1。再用docker自带默认网络bridge运行容器t2。查看ip_forward参数,显示为1,说明是可以进行包转发的。也即mybr0与bridge之间可以进行包转发。

猜你喜欢

转载自blog.csdn.net/ligan1115/article/details/84665966