docker(第四天)

发布自己的镜像

Dockerhub 

1.地址  https://hub.docker.com/ 注册自己得账号

2.在我们服务器上提交自己得镜像

docker  login -u    //username

3.镜像名需要改为  注册用户名/镜像名操作否则被拒绝

docker(第四天)_第1张图片

 Docker 网络

docker(第四天)_第2张图片

三个网络

#docker是如何处理容器网络访问得? 

 docker(第四天)_第3张图片

 docker(第四天)_第4张图片

原理 

1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0,桥接模式,使用得技术是evth-pair技术!
再次测试ip addr

docker(第四天)_第5张图片 发现运行完上一个容器,从1-3,多了一个 262网卡里面包含261成对出现

2.在启动一个容器测试发现又多了一对网卡

docker(第四天)_第6张图片

 我们发下这个容器带来网卡,都是一对一对得

veth-pair 就是一对得虚拟设备接口,他们都是成对出现得,一段连着协议,一段彼此相连

正因为有这个特性,veth-pair充当一个桥梁,链接各种虚拟网络设备的

 3.我们来测试一下tomcat01和tomcat02是否可以ping通

docker exec -it tomcat02 ping 172.17.0.2

结论:容器和容器之间是可以ping通的

绘制一个网络模型图:

docker(第四天)_第7张图片

结论:tomcat01和tomcat02是公用的一个路由器,docker0

所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP

docker(第四天)_第8张图片

解释:容器A 和容器B并不是直接进行链接而是,容器A发送请求到docker0,然后再到容器B

docker中的所有的网络接口都是虚拟的,因为虚拟的转发效率高,内网传递文件

只要容器删除,对应的网桥一对就没了 

--link  (作为了解即可)

 docker(第四天)_第9张图片

 link进行了链接,3ping2可以,2ping3反向就不行

docker inspect可以看见很多相关的知识

docker(第四天)_第10张图片 如果指定容器查看, docker inspect 容器id        

 其实这个tomcat 03就是在本地配置了tomcat02的配置

docker(第四天)_第11张图片

 进入容器访问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(第四天)_第12张图片 查看我们自己配置的网络,docker network inspect mynet

docker(第四天)_第13张图片

 docker(第四天)_第14张图片

docker(第四天)_第15张图片 按预期的一样子网地址,因为在同一网段,直接ping  IP 就可以ping通

 docker(第四天)_第16张图片

网络连通

docker(第四天)_第17张图片

 要实现跨网段的容器互通,比如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(第四天)_第18张图片

 docker exec -it tomcat01 ping tomcat -net -01

 tomcat 02 ping tomcat-net-01 就不行

结论:假设要跨网络操作别人,就需要使用 docker network connect 连通! 

呃呃呃初级的基本命令,和一些简单的网络连通就学完了,接下来就是巩固一下了!

你可能感兴趣的:(docker,容器,运维)