Dockerhub
1.地址 https://hub.docker.com/ 注册自己得账号
2.在我们服务器上提交自己得镜像
docker login -u //username
3.镜像名需要改为 注册用户名/镜像名操作否则被拒绝
三个网络
#docker是如何处理容器网络访问得?
原理
1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0,桥接模式,使用得技术是evth-pair技术!
再次测试ip addr
发现运行完上一个容器,从1-3,多了一个 262网卡里面包含261成对出现
2.在启动一个容器测试发现又多了一对网卡
我们发下这个容器带来网卡,都是一对一对得
veth-pair 就是一对得虚拟设备接口,他们都是成对出现得,一段连着协议,一段彼此相连
正因为有这个特性,veth-pair充当一个桥梁,链接各种虚拟网络设备的
3.我们来测试一下tomcat01和tomcat02是否可以ping通
docker exec -it tomcat02 ping 172.17.0.2
结论:容器和容器之间是可以ping通的
绘制一个网络模型图:
结论:tomcat01和tomcat02是公用的一个路由器,docker0
所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP
解释:容器A 和容器B并不是直接进行链接而是,容器A发送请求到docker0,然后再到容器B
docker中的所有的网络接口都是虚拟的,因为虚拟的转发效率高,内网传递文件
只要容器删除,对应的网桥一对就没了
--link (作为了解即可)
link进行了链接,3ping2可以,2ping3反向就不行
其实这个tomcat 03就是在本地配置了tomcat02的配置
进入容器访问hosts,因为一般配置信息都在这里
查看所有的docker网络
网络模式
bridge:桥接 docker(默认,自己床架也使用bridge模式) 就是02访问03,需要借助01
none:不配置网络
host:和宿主机共享网络
container:容器网络连通(用的少,局限很大)
测试:
我们直接启动的命令 --net bridge, 而这个就是我们的docker0
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --net bridge tomcat 等价
#docker0特点,默认,域名不能访问, --link可以打通连接!
我们可以自定义一个网络
--driver bridge 默认桥接
--subnet 192.168.0.0/16 子网的地址 192.168.0.2 ---192.168.255.255
--gateway 192.168.0.1 网关
查看我们自己配置的网络,docker network inspect mynet
按预期的一样子网地址,因为在同一网段,直接ping IP 就可以ping通
要实现跨网段的容器互通,比如tomcat-01 ping tomcat-net-01
直接ping是不通的,因为是不同网段,一个是182.18 一个是192.168
所以我们需要tomcat-01容器和网卡mynet要打通
测试打通tomcat-01 到mynet
docker network connect mynet tomcat01 把tomcat01放入mynet网卡中
然后查看 docker network inspect mynet 就可以看见再其中
连通之后就是将tomcat01放到了 mynet网络下
一个容器两个ip地址
阿里云服务:公网IP 私网IP
docker exec -it tomcat01 ping tomcat -net -01
tomcat 02 ping tomcat-net-01 就不行
结论:假设要跨网络操作别人,就需要使用 docker network connect 连通!
呃呃呃初级的基本命令,和一些简单的网络连通就学完了,接下来就是巩固一下了!