**
**
首先我们进行网络设置,给主机配置静态IP地址(根据虚拟机中NAT的网段进行设置,并将虚拟机网络适配器设置为自定义NAT,保证每台主机能够连接外网)
(1)选择编辑连接
(2)点击添加
(4)按如下步骤进行保存
(5)然后点击以太网连接
(6)将虚拟机网络设为NAT模式
#接下来就可以进入实验了
1.1 docke默认网络管理
#docker安装时会自动创建三种网络,首先通过网络管理指令进行查看
docker network ls
下面通过一个示例来演示默认的birdge网络管理方式
(1)创建并启动容器
docker run -itd --name=networktest ubuntu
(2)使用网络查看指令查看网络详情
docker network inspect bridge
#网络详情中包括使用bridge启动的networktest容器
1.2 自定义网络介绍
(1)Bridge networks(桥接网络)
(2)Overlay network in swarm mode(swarm 集群中的覆盖网络)
(3)Custome network plguins(定制网络插件)
1.3 自定义bridge网络
(1)创建自定义网络
sudo docker network create --driver bridge isolated_nw
#查看创建的网络是否成功
docker network ls
(2)使用自定义网络启动容器
docker run --network=isolated_nw -itd --name=nwtest busybox
#查看启动后的网络详情
docker inspect nwtest
(3)为nwtest容器添加其他网络管理方式
docker network connect bridge nwtest
#使用docker inspect nwtest查看网络详情
此时容器nwtest就拥有了默认的bridge网络和自定义的isolated_nw网络
(4)断开容器网络连接
docker network disconnect isolated_nw nwtest
(5)移除自定义网络
docker network rm isolated_nw
1.4 容器之间的网络通信
(1)创建容器
#创建两个使用默认的bridge网络的容器
docker run -itd --name=container1 busybox
docker run -itd --name=container2 busybox
#创建一个使用自定义的isolated_nw网络(已创建)的容器
docker run --network=isloated_nw -itd --name=container3 busybox
#为container2新增一个自定义的isolated-nw 网络连接
docker network connect isolated_nw container2
此时,container2容器同时拥有bridge和isolated_nw两种网络管理方式,container1 使用的是bridge网络管理,container3使用的是自定义的isolated_nw网络管理
(2)容器地址查看
首先进入container2容器
docker attach container2
然后使用ifconfig命令查看
#查看container1
#查看container3
(3)容器通信测试
#首先进入container1
使用ping命令连接container3
由图可知,1与3无法连通,验证了两个容器不在同一网络环境下无法通信
#在container2内部分别连接container1和container3
由此可知,不同容器必须在同一网络环境下通信。默认bridge网络管理的容器可以用ip进行通信,但无法用容器名称通信,而自定义网络管理同时可以使用容器IP和容器名称进行通信
**
**
2.1 docker swarm概述
#docker swarm集群的优点
a.方便创建和管理集群
b.可扩展
c.可实现期望的状态调节
d.集群中多主机网络自动扩展管理
e.提供服务发现功能
f.可实现负载均衡
g.安全性强
h.支持延迟更新和服务回滚
2.2 docker swarm使用
(1)环境搭建
准备三台Ubuntu系统主机(均按照docker,并且可以连接网络,docker版本1.2以上)
集群管理 节点docker机器的ip地址固定,集群中所有节点能访问该管理节点
节点之间必须使用相应的协议并保证开放。
用于集群管理通信的TCP端口(2377)
用于节点间通信的TCP和UDP端口(7946)
用于覆盖网络流量的UDP端口(4789)
ip地址分布如下:
manger1:192.168.10.222
worker1:192.168.10.223
worker2:192.168.10.224
(2)创建docker swarm集群
#在manger1上创建docker swarm集群
docker swarm init --advertise-addr 192.168.10.222
#然后在此节点查看集群节点信息
docker node ls
(3)向docker swarm集群添加工作节点
#启动worker1和worker2机器,执行如下命令加入工作节点
注:–token 后一定要使用自己在前面创建docker swarm集群时返回的信息
#再次查看集群节点信息
此时有一个管理节点和两个工作节点,说明集群创建成功
(4)向docker swarm集群部署服务
#使用docker Hub上自带的alpinex镜像来部署
docker service create --replicas 1 --name helloworld alpine ping docer.com
(5)查看docker swarm 集群中的服务
#在管理节点通过docker service ls查看当前集群中的服务列表信息
#查看服务部署的具体详情
docker service inspect helloworld
#查看指定服务在集群节点上的分配和运行情况
docker service ps helloworld
(6)更改docker swarm 集群服务副本数量
#更改完成后使用docker service ps 查看
(7)删除服务
#在集群管理节点上删除服务后会在集群中彻底删除
(8)访问服务
#下面通过自定义overlay驱动网络为例来讲解集群下的网络管理与服务访问
a.在集群管理节点上执行docker network ls 来查看网络列表
b.在管理节点上,创建以overlay为驱动的自定义网络
$ docker network create
–driver overlay
my-multi-host-network
c.在管理节点上部署服务
$docker service create
–network my-multi-host-network
–name my-web
–publish 8080:80
–replicas 2
nginx
d.在管理节点上使用docker service ps my-web指令查看服务的两个服务副本运行情况
#由图看出,该服务两个副本被随机分配到两台节点机器上,并正常运行
e.外界访问服务
#打开浏览器使用任意一台机器的“IP+8080”端口进行服务访问
#均可正常访问部署的服务,这是是由于集群负载均衡器将请求路由到一个活动容器,从而实现容器内部服务的正常访问
3.1.数据卷的使用
(1)创建并管理数据卷
#创建一个名为my-vol的数据卷
$docker volume create my-vol
#使用docker volume ls 查看本地数据卷列表
#使用docker volume inspect 指令查看指定数据卷详情
#删除指定名称的数据卷
docker volume rm
(2)启动容器并加载数据卷
#下面来演示如何在容器创建时配置并管理docker volume数据卷
a.在docker主机终端分别使用docker pa -a 和docker volume ls 查看本地docker 机器上存在的容器和数据卷
b.确认查看本机docker文件系统中的容器和数据卷
在root用户下,进入“/var/lib/docker"目录
#containers 和volumes就是用于存放用户创建的容器和数据卷的
c.启动容器并挂载数据卷
$docker run -d
-it
–name devtest
–mount source=myvol,target=/app
busybox:latest
d.再次查看本机容器和数据卷列表
$docker ps
e.使用docker inspect 指令查看容器详情
f.再次确认本机docker 文件系统中的容器和数据卷
#分别进入containers 容器文件目录和volumes数据卷文件目录查看内容
#由图看出,新建的容器和数据卷已自动生成在本地docker文件目录中,此时,如果我们将两个容器都删除,docker文件目录中的容器也会自动消息,但数据卷可以保留,除非数据卷也会被删除。