docker--网络

docker的网络很重要,我们前面所说的所有东西都依赖网络才能工作。我们从两方面来学习网络:

       端口映射网络模式

1.端口映射:默认情况下,容器和宿主机之间网络是隔离的,我们可以通过端口映射的方式,将容器中的端口,映射到宿主机的某个端口上,这样我们就可以通过宿主机的ip+port来访问容器里的内容。

   docker的端口映射:

     (1)随机映射:-P(大写)

                     格式:docker run -d -P 依赖镜像名

                     演示:docker run -d -P --name cc nginx 

                     输入docker ps查看创建的容器:

                         

                      输入netstat -tnulp查看本机端口信息:

                           

                       发现本机创建了一个32768的端口映射到容器的80端口中 

     (2)指定主机ip映射:-p 宿主机ip::容器端口

                        格式:docker run -d -p 宿主机ip::容器端口 --name 容器名 依赖镜像名

                        演示:docker run -d -p 127.0.0.1::80 --name mynginx nginx

                        输入docker ps查看常见的容器:

                                      (3)指定主机ip+port映射:-p 宿主机ip:宿主机端口:容器端口

                        格式:docker run -d -p 宿主机ip:宿主机端口:容器端口 --name 容器名 依赖镜像名

                        演示:docker run -d -p 127.0.0.1:12345:80 --name mynginx1 nginx

                        输入docker ps查看常见的容器:

                           

       (4) 多端口映射:

                        格式:docker run -d -p 宿主机端口1:容器端口1 -p 宿主机端口2:容器端口2 --name 容器名 依赖镜像名

                        演示:docker run -d -p 520:499 -p 7653:80 --name mynginx2 nginx

                        输入docker ps查看常见的容器:

                         

2.网络模式

     2.1 docker 网络命令:docker network help                 //查看网络命令帮助

                                         docker network connect           //将一个容器连接到一个网络       

                                         docker network create              //创建一个网络   

                                         docker network disconnect       //从网络断开一个容器

                                         docker network inspect            //在一个或多个网络上显示详细信息  

                                         docker network ls                     //查看docker中的网络列表 

                                         docker network rm                    //删除一个或多个网络

     2.2 docker常用的网络模式:

          bridge模式:docker的默认模式,它会在docker容器启动的时候自动配置好自己的网络信息,同一宿主机的所有容器都在                                   这个网络下,彼此间可以通信。类似vmware虚拟机的桥接模式。利用宿主机的网卡进行通信,因为涉及到                                     网络转换,所以会造成资源消耗,网络效率低。

          host模式:容器使用宿主机的ip地址进行通信。特点:容器和宿主机共享网络。

          container模式:新创建的容器间使用,使用已创建的容器的网络,类似一个局域网。特点:容器和容器共享网络。

          none模式:这种模式最纯粹,不会帮你做任何的网络配置,可以最大限度的定制化。不提供网络服务,容器启动后无网络                               连接。

          overlay模式:容器彼此不再同一网络,而且能互相通信。

    2.3 bridge实践:

       (1)创建网络my-bridge

                      格式:docker network create --driver 网络类型 网络名称

                      演示:docker network create --driver bridge my-bridge

         (2) 创建自定义网段与网关的网络my-bridge2

                      格式:docker network create --driver bridge --gateway 172.99.0.1 --subnet 172.99.0.0/16 my-bridge2

                      说明:--gateway:网关 。 --subnet:ip/子网。

       (3)在自定义创建的网络my-bridge中创建并启动容器nginx-test1

                      格式:docker run --net=网络名称 -itd --name 容器名 依赖镜像名

                      演示:docker run --net=my-bridge -itd --name nginx-test1 nginx  

       (4)在自定义创建的网络my-bridge2中创建并启动容器nginx-test2

                      演示:docker run --net=my-bridge2 -itd --name nginx-test2 nginx  

      (5)容器断开网络

                       格式:docker network disconnect 网络名 容器名

                       演示:网络my-bridge与容器nginx-test1断开

                                  docker network disconnect my-bridge nginx-test1

                       演示:网络my-bridge2与容器nginx-test2断开

                                  docker network disconnect my-bridge2 nginx-test2

      (5)容器连接网络

                       格式:docker network connect 网络名 容器名

                       演示:网络my-bridge与容器nginx-test2连接

                                  docker network disconnect my-bridge nginx-test2

                       演示:网络my-bridge2与容器nginx-test1连接

                                  docker network disconnect my-bridge2 nginx-test1

  2.4 host模式实践:

             host模型:容器使用宿主机的ip地址进行对外提供服务,本身没有ip地址。

              格式:docker run --net=host -itd --name 容器名 依赖镜像

               演示: docker run --net=host -itd --name host-test nginx

                           可以在浏览器中直接输入127.0.0.1,能看到容器中的nginx首页

  2.5 none模式实践:              

                none网络模式,是一种自由度非常高的网络模式,我们可以最大化的自定义我们想要的网络。

               格式:docker run --net=none -itd --name 容器名 依赖镜像

               演示: docker run --net=none -itd --name none-test nginx

            

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值