💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
#Docker:网络 ###网络 ``` // 查看已有的网络 docker network ls // 查看bridge网络的底层信息 docker network inspect bridge // 创建一个后台运行的容器web1 --net用来指定要使用的网络,如果不加会默认使用bridge网络 // 如果本机没有nginx镜像,系统会自动从网络上下载 docker run -d --name web1 --net bridge nginx // 再次查看bridge网络的底层信息 docker network inspect bridge // 再创建一个容器web2 docker run -d --name web2 --net bridge nginx // 再次查看bridge网络的底层信息,可以查看到已经有两个容器使用bridge网络了,在这个网络下面的容器之间可以相互通信 docker network inspect bridge // 登录到web1 docker exec -it web1 bash ping 172.17.0.3 // 可以ping通,说明web1和web2之间可以相互通信 ``` ###理解none网络 ``` // 创建一个容器并指定none网络 docker run -d --name web_none --net none nginx // 查看none网络的底层信息,可以看到web_none容器在使用none网络,但是并没有一个可以使用的ip地址,也就是说这个容器跟外界是一个完全隔离的状态,谁也没有办法和它通信 docker network inspect none ``` ![](https://box.kancloud.cn/afb691b492e73be177c72201f28b9dd1_796x523.png) ###理解host网络 ``` // 创建一个容器并指定host网络 docker run -d --name web_host --net host nginx // 查看host网络的底层信息,可以看到web_host容器在使用host网络,但是也没有一个可以使用的ip地址,因为使用host网络的容器的ip地址跟主机的网络是一样的 docker network inspect host ``` ###Docker Quickstart Terminal启动蓝屏解决办法 BIOS开启虚拟化 ![](https://box.kancloud.cn/61e524a947073f4ee496964ad150ac20_411x410.png) ###端口 ``` // 如果想让外界可以访问到默认的birdge网络上的容器提供的服务,需要告诉docker要使用哪一些端口 // 查看镜像使用的端口 docker inspect nginx // 在创建容器的时候,我们可以去指定一下主机跟容器之间的端口映射关系 // 80(主机的80端口):80(容器的80端口) 如果有人访问主机上面的80端口的时候,这个访问会被定向到这个容器上面的80端口 docker run -d --name web3 --publish 80:80 nginx // 查看主机的ip地址 docker-machine inspect default // 使用浏览器访问这个ip地址,显示的内容就是web3这个容器的nginx提供的服务 ``` ###端口绑定 ``` // 查看容器跟主机绑定的端口 docker inspect web3 // 或者使用(显示结果左边是容器端口,右边是主机端口) docker port web3 // 删除web3容器 docker rm web3 // 重新创建一个容器,让它的80端口指向主机的一个随机端口, 这次在浏览器访问需要用 http://192.168.99.100:32768/去访问 docker run -d --name web3 --publish 80 nginx // 删除web3容器 docker rm -f web3 // 重新创建一个容器,使用--publish-all 或者 -P 选项,使用它我们可以不需要去手工指定端口或者是端口的一个映射关系,它会自动去公布在镜像里面设置的要公布的所有的端口 docker run -d --name web3 --publish-all nginx docker port web3 // 在浏览器中访问需要使用 http://192.168.99.100:32770/ 去访问 ``` ###自定义网络 我们可以基于某一个类型的网络去创建一些自定义的网络,这样属于这个网络的容器就会被单独的隔离出来,它们之间可以进行相互通信,但是其它不在这些自定义网络上面的容器不能够直接访问到它们,一个容器可以属于多个网络,在用户自定义网络上面的容器,它们直接可以使用各自容器的名字来访问到对方,因为它们会用到docker内嵌的dns服务 ``` // 创建一个新的网络 docker network create --driver bridge web // 查看web网络的信息 docker network inspect web ``` ###把容器放到自定义网络里 ``` // 创建容器并指定网络为自定义的web网络 docker run -d --name web5 --net web nginx // 查看web网络 docker network inspect web // 将已经存在的容器放到指定的网络里面 docker network connect web web3 docker network inspect web // 登录到web3 docker exec -it web3 bash ping web5 // 通过ip addr我们可以发现web3现在属于两个网络,一个是bridge网络,一个是web网络 ip addr // 将web3容器从bridge网络中删除 docker network disconnect bridge web3 docker network inspect bridge ```