Docker中的网络与数据管理
docker网络管理
Docker默认使用bridge(单主机互联)和overlay(可跨主机互联)两种网络驱动来进行容器的网络管理。
在进行docker安装时,docker就会自动创建三种网络。在客户端=可以查看。命令如下:
$docker network ls
1.下面通过一个示例来演示默认bridge网络管理方式,执行过程如下:
1).创建并启动容器:
$docker run -itd --name=networktest ubuntu
2) .查看网络详情:
$docker network inspect bridge
注:在docker swarm集群环境下,除三种默认网络外,docker还提供了docker_gwbridge和ingress两种默认网络。
2.自定义网络。
1).创建自定义网络.
$docker network create --driver bridge isolated_nw
2).使用自定义网络启动容器。
$docker run --network=isolated_nw -itd --name=nwtest busybox
3).为网络添加管理。
$docker network connect bridge nwtest
4).断开容器网络链接。
$docker network disconnect isolated_nw nwtest
5).移除自定义网络。
$docker network rm isolated_nw
3.容器之间的网络通信。
1).创建容器container1和container2。
$docker run -itd --name=container1 busybox
$docker run -itd --name=container2 busybox
2).创建一个使用自定义网络的容器container3。
$ docker run --network=isolated_nw -itd --name=container3 busybox
3).为container2容器新增一个自定义的网络连接。
$ docker network connect isolated_nw container2
4).容器地址查看。
$docker attach container2
5).容器通信测试:
默认网络下使用–link参数通过容器名称进行通信:
docker swarm 集群
上面对docker自定义网络进行了演示,其中提到了另一种网络overlay必须在docker swarm集群环境下才能使用,下面针对docker swarm集群进行演示。
-
环境搭建。
准备三台安装docker的Ubuntu主机,要求docker版本1.2以上,旧版本不支持集群;修改三台主机名,分别为manage、work1、work2. -
.创建docker swarm集群。
1). 在manage主机上创建docker swarm集群,操作指令如下:
2).在管理节点上查看集群节点信息。
$docker node ls
-
向docker swarm集群添加工作节点。
1).启动另外两台主机,向集群中加入工作节点,指令如下。
2).查看集群信息。
$docker node ls
-
向docker swarm集群部署服务。
$ docker service create --replicas 1 --name=helloworld alpine ping docker.com
注:
.docker service create :用于创建一个基于Alpine镜像的服务。
.–replicas:指定了此服务只有一个副本实例。
.–name:服务名称。
.ping docker.com:表示服务启动后执行的命令。 -
查看docker swarm集群中的服务。
1).查看集群中服务列表信息。
2).查看服务详情。
3).查看服务在集群节点上的分配和运行情况。
$ docker service ps hellonx
-
更改docker swarm集群服务副本数量,在manage节点上使用以下命令。
-
删除服务。
-
访问服务。
1).在manage节点上执行以下命令查看网络列表。
2).在manage节点上创建一overlay为驱动的自定义网络。
$docker network create \--driver overlay \my-multi-host-network
3).在manage节点上再次部署服务。
$ docker service create \--network my-multi-host-network \--name my-web \--publish 8080:80 \--replicas 2 \nginx
4).在manage节点上,使用指令查看服务副本运行情况。
$docker service ps my-web
5).外界访问服务。
docker 数据管理
docker镜像是通过读取dockerfile文件中的指令构建的,dockerfile的每条指令都会创建一个镜像层,并且每层都是只读的,这一系列镜像层就构建成了docker镜像。
docker中的数据都是存放在容器层的,这样存储有较多的缺陷。为克服这种缺陷,使用另一种叫做docker volume数据外部挂载的机制进行数据管理。
volume数据卷使用。
- 创建并管理数据卷。
1).创建数据卷。
2).查看数据卷。
3).核查数据卷。
4) .删除数据卷。
$docker volume rm my-web
2.启动融合器并加载数据卷。
1).查看本机容器和数据卷。
2).确认查看本机docker文件系统中的容器和数据卷。
3).启动容器并挂在数据卷。
$docker run -d -it --name devtest --mount source=nxvol,target=/app busybox:latest
4).再次查看本级容器和数据卷。
$docker ps
5).检查容器详情。
$docker inspect
6) .再次确认本机docker文件系统中的容器和数据卷。