4.7-容器网络之host和none

        这一节我们来看一下docker中的另外两种网络,host和none。

        先使用docker network ls查看容器的网络。

4.7-容器网络之host和none_第1张图片

    然后,使用docker network inspect none查看none这个网络上面连接的容器。


    看到现在none这个网络上面连接的容器是没有的。
    使用docker image ls查看有哪些docker image,然后,使用下面的命令启动docker container:
其中,--network none表示容器启动时指定使用none网络。
docker run -d --name test1 --network none flask-hello-docker
​​​​    再使用docker network inspect none查看none这个网络上面连接的容器
​​​​​​​
    于是就看到Containers, 里面包含了一个test1 表示这个容器连接到了none。

        然后,使用docker exec -it test1 /bin/sh进入到test容器中。

        然后执行ip a4.7-容器网络之host和none_第2张图片

        可以发现test1除了有一个lo本地回环口就没有其他网络接口了,这就意味着test1这个容器所在的namespace是一个孤立的,我们只可以通过docker exec  -it test1 /bin/sh访问这个容器,除此之外没有其他任何方式可以访问到这个容器。

        既然我们谁都不能访问这个test1容器(连接到none这个网络的容器),那创建这个容器有什么用呢?我们实际应用中可能会存在安全低等级比较高的应用,比如存储密码的容器,我不想让这个存储密码的服务让任何人访问到,只有自己在本地访问就可以了,这时可以通过这种方式来实现。

        然后我们再来看看host这种网络。我们先停掉test1,然后再删除test1。

4.7-容器网络之host和none_第3张图片

        然后,重启启动test1,指定网络是host。

docker run -d --name test1 --network host flask-hello-docker

        再看一下host网络上连接的容器有哪些

docker network inspect host

4.7-容器网络之host和none_第4张图片

        然后,使用docker exec -it test1 /bin/sh进入到test容器中。

        运行ip a 

        然后使用exit退出test1容器,这时,在linux主机上使用ip a

        我们发现,使用host网络的容器,它们的没有自己的network namespace,它和主机共享一套network namespace。

        通过连接host网络这种方式启动docker container存在一个问题,就是可能会存在端口冲突的问题。

你可能感兴趣的:(docker,docker)