目录
三、项目实施 8
3.1 搭建Docker实训环境 8
3.1.1本地安装docker环境 8
3.1.2运行docker 10
3.2 Docker容器编排功能 11
3.2.1 编写Dockerfile构建nginx:v1镜像,宿主机端口是8080,默认主页内容是学号+姓名。 11
3.2.2 利用Compose部署一个Tomcat环境,上传一个自己编写的html网站,测试外网访问到这个的网站。 12
3.2.3 搭建私有仓库,上传nginx:v1镜像。 15
3.3 Docker网络配置、容器互联、配置网桥 16
3.3.1 创建一个点到点的连接 16
3.3.2跨主机容器间点到点连接 18
3.4 数据卷容器来备份、恢复、迁移数据卷 23
3.4.2利用数据卷容器来备份、恢复、迁移数据卷 25
3.5 掌握Docker Swarm集群的自动编排和发现功能 27
3.5.1 Docker Swarm环境安装 27
3.5.2 启动swarm集群 28
四、总结 32
三、项目实施
3.1 搭建Docker实训环境
3.1.1本地安装docker环境
1、将Docker.tar.gz压缩包和 CentOS-7.5-x86_64-DVD-1804.iso镜像文件通过CRT上传至/root目录并解压Docker.tar.gz
[root@master ~]#tar -zxvf Docker.tar.gz
挂载镜像
[root@master ~]#mkdir centos
[root@master ~]#vi /etc/fstab //挂载
/dev/sr0 /root/centos/ iso9600 ro 0 0
2、vi /etc/selinux/config //修改selinux参数
[root@master ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
[root@master ~]#reboot
[root@master ~]# getenforce 0
3、关闭防火墙及设置开机不自启
[root@server ~]#iptables -F;iptables -Z;iptables -X
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]# systemctl status firewalld | grep “Active”
Active: inactive (dead)
4、vi /etc/sysctl.conf //开启路由转发
[root@server ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
[root@server ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
5、添加yum源
[root@server ~]#cd /etc/yum.repos.d
[root@server yum.repos.d]# ls
[root@server yum.repos.d]# mkdir bk
[root@server yum.repos.d]# mv C* bk
[root@server ~]# cat /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[docker]
name=docker
baseurl=file:///root/Docker
gpgcheck=0
enabled=1
[root@server ~]# yum clean all
[root@server ~]# yum repolist
repo id repo name status
centos centos 3,971
Docker Docker
6、检查内核
[root@server ~]# uname -r
3.10.0-327.el7.x86_64
7、安装Docker
[root@server ~]# yum -y install docker*
启动 Docker 并设置开机自启
[root@server ~]# systemctl daemon-reload
[root@server ~]# systemctl restart docker
[root@server ~]# systemctl enable docker
查看 Docker 的系统信息
[root@server ~]# docker info
图3.1.1-1 使用docker info查看docker系统信息
3.1.2运行docker
(1)从公共仓库下载镜像
[root@server yum.repos.d]# systemctl restart docker
[root@server yum.repos.d]# yum -y install ntpdate
[root@server yum.repos.d]# ntpdate cn.pool.ntp.org
//设置时间同步
[root@server yum.repos.d]# docker search ubuntu
//查看公共仓库上的镜像文件
[root@server yum.repos.d]# docker pull ansible/ubuntu14.04-ansible
//拉取公共仓库上的镜像文件
(2)运行容器,并进入容器进行配置
[root@server ~]#docker run -it --name=ubuntu001 ubuntu:latest bash
运行ubuntu14.04镜像并循环打印“hello,world”字符串
[root@server ~]#docker run ansible/ubuntu14.04-ansible /bin/bash -c “while true;do echo hollow,world;sleep 1;done”
图3.1.2-1 运行镜像并循环打印“hello world”字符
3.2 Docker容器编排功能
3.2.1 编写Dockerfile构建nginx:v1镜像,宿主机端口是8080,默认主页内容是学号+姓名。
1、拉取nginx镜像
[root@master ~]# docker pull nginx:latest
[root@master ~]# docker images
2、创建Dockerfile脚本
[root@master ~]# mkdir mynginx
[root@master ~]# cd /mynginx
[root@master ~]# touch Dockerfile
[root@master mynginx]# ls
Dockerfile
3、编写脚本
[root@master mynginx]# vi Dockerfile
FROM nginx:latest
RUN echo ‘
4、构建自定义镜像
[root@master mynginx]#docker build -t nginx:v1 .
[root@master mynginx]#docker images | grep nginx
5、运行新的镜像
[root@master mynginx]#docker run -itd --name mynginx -p 8080:80 --restart=always nginx:v1
0b05c83125dfe7aed4800e7022088e852ff73eac34e2b62e7a712c6e93d49ba9
[root@master mynginx]#docker ps
6、访问网址
http://192.168.8.13:8080
图3.2.1-1构建自定义镜像ngnix:v1
图3.2.1-2访问结果
3.2.2 利用Compose部署一个Tomcat环境,上传一个自己编写的html网站,测试外网访问到这个的网站。
1、将压缩包jdk-8u171-linux-x64和unzip apache-tomcat-7.0.67.zip文件通过CRT上传至/root/Tomcat6-16目录并解压它们。
[root@master ~]# mkdir Tomcat6-16
[root@master ~]# cd Tomcat6-16/
[root@master Tomcat6-16]# tar -zxvf jdk-8u171-linux-x64.tar.gz
[root@master Tomcat6-16]# yum -y install unzip
[root@master Tomcat6-16]# unzip apache-tomcat-7.0.67.zip
[root@master Tomcat6-16]# tar -cvzf apache-tomcat-7.0.67.tar.gz apache-tomcat-7.0.67
2、用二进制安装docker-compose
[root@master~]#curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
.给权限并查看版本
[root@master ~]# chmod +x /usr/local/bin/docker-compose
[root@master ~]# docker-compose -v
docker-compose version 1.16.1, build 6d1ac21
创建Tomcat路径
[root@master ~]#mkdir myTomcat
[root@master ~]#cd myTomcat/
安装所需要的的包并解压
[root@master ~]#tar -xvzf jdk-8u171-linux-x64.tar.gz
[root@master ~]#tar -xvzf apache-tomcat-7.0.67.tar.gz
编写Dockerfile
[root@master myTomcat]#vi Dockerfile
FROM centos
ADD ./jdk-8u171-linux-x64.tar.gz /root
ADD ./apache-tomcat-7.0.67.tar.gz /root
ENV JAVA_HOME /root/jdk1.8.0_171
ENV PATH
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
RUN chmod +x /root/apache-tomcat-7.0.67/bin/startup.sh
RUN chmod +x /root/apache-tomcat-7.0.67/bin/catalina.sh
EXPOSE 8080
ENTRYPOINT /root/apache-tomcat-7.0.67/bin/startup.sh && tail -F /root/apache-tomcat-7.0.67/logs/catalina.outt
编写docker-compose.yml
[root@master myTomcat]#vi docker-compose.yml
version: ‘3’
services:
tomcat:
build: .
restart: always
ports:
- “8200:8080”
3、执行docker-compose up
[root@master myTomcat]#docker-compose up
http://192.168.8.13:8200
4、上传一个自己编写的html网站,测试外网访问到这个的网站。
1)安装httpd服务
[root@master ~]# yum -y install httpd
2)启动apache服务器
[root@master ~]# systemctl start httpd
3)设置开机自启
[root@master ~]# systemctl enable httpd
4)编写index.html文件
[root@master ~]# cd /var/www/
[root@master www]# ls
[root@master html]# ls
index.html
[root@master html]# cat index.html
此生不悔入华夏,来世还做中国人!
5、访问地址http://192.168.8.13
图3.2.2-1 Tomcat环境界面
图3.2.2-1 自己编写的网站界面
3.2.3 搭建私有仓库,上传nginx:v1镜像。
1、拉取 registry镜像
[root@master ~]#docker pull registry:latest
2、当私有仓库和公有仓库并存的时候,要对vi /usr/lib/systemd/system/docker.service进行修改。
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
–insecure-registry 192.168.8.13:5000
3、然后将docker重新启动
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
4、给 nginx:v1镜像打标签
[root@master ~]# docker tag nginx:v1 192.168.8.13:5000/nginx:v1
5、将镜像上传到私有仓库
[root@master ~]# docker push 192.168.8.13:5000/nginx:v1
查看镜像
[root@master ~]# docker images
7、查看仓库中的镜像
[root@master ~]# curl http://192.168.8.13:5000/v2/nginx/tags/list
{“name”:“nginx”,“tags”:[“v1”]}
图3.2.3-1 将镜像上传到私有仓库并查看镜像
3.3 Docker网络配置、容器互联、配置网桥
3.3.1 创建一个点到点的连接
1、创建两个容器
首先启动 2 个容器(容器不能退出,操作请克隆终端)
[root@server ~]# docker run -it --net=none --rm centos:latest
[root@3c23411da935 /]#
[root@server ~]# docker run -it --net=none --rm centos:latest
[root@e85d5487d317 /]#
查看容器ID
[root@server ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e6ef8446688 ubuntu:latest “bash” 33 seconds ago Up 32 seconds ubuntu002
e97aae7da13a ubuntu:latest “bash” 5 minutes ago Up 4 minutes ubuntu001
2、创建两个容器自身的命令空间
找到进程号,然后创建网络命名空间的跟踪文件
[root@server ~]# docker inspect -f ‘{{.State.Pid}}’ 3c23411da935
1777
[root@server ~]# docker inspect -f ‘{{.State.Pid}}’ e85d5487d317
1887
[root@server ~]# mkdir -p /var/run/netns
[root@server ~]# ln -s /proc/1777/ns/net /var/run/netns/1777
[root@server ~]# ln -s /proc/1887/ns/net /var/run/netns/1887
3、创建PEER接口绑定容器
创建一对 peer 接口,然后配置路由
[root@server ~]# ip link add A type veth peer name B
把进程号为1777的容器分配到A接口。
[root@server ~]# ip link set A netns 1777
为A接口配置10.1.1.1/32的地址。
[root@server ~]# ip netns exec 1777 ip addr add 10.1.1.1/32 dev A
开启A接口。
[root@server ~]# ip netns exec 1777 ip link set A up
为A接口配置路由指向10.1.1.2。
[root@server ~]# ip netns exec 1777 ip route add 10.1.1.2/32 dev A
把进程号为1887的容器分配到B接口
[root@server ~]# ip link set B netns 1887
为B接口配额制10.1.1.2/32的地址
[root@server ~]# ip netns exec 1887 ip addr add 10.1.1.2/32 dev B
开启B接口。
[root@server ~]# ip netns exec 1887 ip link set B up
为B接口配置路由指向10.1.1.1。
[root@server ~]# ip netns exec 1887 ip route add 10.1.1.1/32 dev B
4.测试连通性
[root@e85d5487d317 /]# ping 10.1.1.2 -c 3
[root@3c23411da935 /]# ping 10.1.1.1 -c 3
图3.3.1-1 容器间互pingIP地址(1)
图3.3.1-2 容器间互pingIP地址(2)
3.3.2跨主机容器间点到点连接
1、在两台主机上创建一个Linux桥,并给桥设置管理地址
#yum install bridge-utils
#brctl addbr br-int
[root@luyan ~]# ifconfig br-int 172.19.65.1/24
[root@luyan2 ~]#ifconfig br-int 172.19.64.1/24
#ip link set br-int up
2、修改两台主机上的容器默认网桥
#cat /etc/docker/daemon.json
{
“bridge”: “br-int”,
“registry-mirrors”: [“https://lg80lp9o.mirror.aliyuncs.com”]
}
#systemctl daemon-reload
#systemctl restart docker
3、启动centos容器,测试容器地址
[root@luyan ~]# docker run -it centos:latest /bin/bash
[root@c25322119715 /]# ip a
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
11: eth0@if12:
link/ether 02:42:ac:13:40:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.19.64.2/24 brd 172.19.64.255 scope global eth0
valid_lft forever preferred_lft forever
[root@luyan2 ~]# docker run -it --name centos01 centos:latest /bin/bash
[root@28e4183249c7 /]# ip a
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
5: eth0@if6:
link/ether 02:42:ac:13:41:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.19.65.2/24 brd 172.19.65.255 scope global eth0
valid_lft forever preferred_lft forever
4、在两台主机上的centos上安装SDN(软件定义网络)openvswitch网桥
安装依赖包
#yum -y install openssl-devel wget kernel-devel
#yum -y install python-six selinux-policy-devel python-sphinx unbound-devel
#yum groupinstall “Development Tools” -y
5、下载源码、解压
#tar -zxvf openvswitch-2.11.1.tar.gz
6、创建编译目录
#mkdir -p rpmbuild/SOURCES
#cp openvswitch-2.11.1.tar.gz rpmbuild/SOURCES/
7、从spec文件中删除openvswitch-kmod的依赖包,并创建一个新的spec文件
#sed ‘s/openvswitch-kmod, //g’
openvswitch-2.11.1/rhel/openvswitch.spec > openvswitch-2.11.1/rhel/openvswitch_no_kmod.spec
8、开始编译
#rpmbuild -bb --without=check ~/openvswitch-2.11.1/rhel/openvswitch_no_kmod.spec
9、安装编译生成的rpm文件
#yum localinstall rpmbuild/RPMS/x86_64/openvswitch-2.11.1-1.x86_64.rpm -y
10、启动服务
#systemctl start openvswitch.service
11、查看服务状态
#systemctl -l status openvswitch.service
12、创建一个sdn openvswitch 网桥
[root@luyan ~]# ovs-vsctl add-br br-docker
13、给sdn openvswitch网桥增加GRE接口
[root@luyan ~]# ovs-vsctl add-port br-docker gre0 – set interface gre0 type=gre options:remote_ip=192.168.1.10
[root@luyan ~]# ovs-vsctl show
994c4372-81eb-4ac9-812a-b28368f308ce
Bridge br-docker
Port “gre0”
Interface “gre0”
type: gre
options: {remote_ip=“192.168.1.10”}
Port br-docker
Interface br-docker
type: internal
ovs_version: “2.11.1”
[root@luyan2 ~]#ovs-vsctl add-br br-docker
[root@luyan2 ~]#ovs-vsctl add-port br-docker gre0 – set interface gre0 type=gre options:remote_ip=192.168.1.9
[root@luyan2 ~]# ovs-vsctl show
e3a0a6b1-1f49-4d2c-963e-f9b0689cec2f
Bridge br-docker
Port br-docker
Interface br-docker
type: internal
Port “gre0”
Interface “gre0”
type: gre
options: {remote_ip=“192.168.1.9”}
ovs_version: “2.11.1”
14、将sdn的br-docker网桥接入到Linux桥
[root@luyan ~]# brctl addif br-int br-docker
[root@luyan ~]# brctl show
bridge name bridge id STP enabled interfaces
br-int 8000.3ab8fef67f81 no br-docker
veth47bfcf3
docker0 8000.02421ce7b0d9 no
[root@luyan2 ~]#brctl addif br-int br-docker
[root@luyan2 ~]# brctl show
bridge name bridge id STP enabled interfaces
br-int 8000.1a2de2681c9a no br-docker
veth2dd4a84
docker0 8000.02424a331027 no
15、在luyan主机上添加路由
[root@luyan ~]# ip route add 172.19.65.0/24 via 192.168.1.10 dev ens33
[root@luyan ~]# ip route
default via 192.168.1.1 dev ens33 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.19.64.0/24 dev br-int proto kernel scope link src 172.19.64.1
172.19.65.0/24 via 192.168.1.10 dev ens33
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.9 metric 100
16、在luyan2主机上添加路由
[root@luyan2 ~]#ip route add 172.19.64.0/24 via 192.168.1.9 dev ens33
[root@luyan2 ~]# ip route
default via 192.168.1.1 dev ens33 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.19.64.0/24 via 192.168.1.9 dev ens33
172.19.65.0/24 dev br-int proto kernel scope link src 172.19.65.1
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.10 metric 100
图3.3.2-1 跨主机容器间互ping IP地址(1)
图3.3.2-2 跨主机容器间互ping IP地址(2)
3.4 数据卷容器来备份、恢复、迁移数据卷
3.4.1利用Compose部署一个HTTP环境,并且可以自动运行HTTP的页面
1、创建工作目录
[root@luyan ~]#mkdir http6-18
[root@luyan ~]# cd http6-18/
2、编写Dockerfile
[root@luyan http6-18]# cat Dockerfile
FROM centos
RUN yum install httpd -y
EXPOSE 80
CMD [“-D”,“FOREGROUND”]
ENTRYPOINT [“/usr/sbin/httpd”]
3、编写docker-compose,yml文件
[root@luyan http6-18]# cat docker-compose.yml
version: ‘3’
services:
http:
build: .
restart: always
ports:
- “9100:80”
4、创建应用
[root@luyan ~]#docker-compose up
5、查看容器状态
[root@luyan http6-18]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
21081f3280d2 http618_http “/usr/sbin/httpd -D …” 8 minutes ago Up 8 minutes 0.0.0.0:9100->80/tcp http618_http_1
6、访问网页
http://192.168.2.229:9100
图3.4.1-1 HTTP环境界面
3.4.2利用数据卷容器来备份、恢复、迁移数据卷
1、先使用ubuntu镜像创建一个database容器
[root@luyan ~]# docker run -it -v /database --name database ubuntu:latest
2、在容器中的/database目录下创建ly01,ly02两个文件,并查看这两个文件
root@35c89e53671a:~# cd database/
root@35c89e53671a:~/database# ls
ly01 ly02
3、数据备份
首先使用 --volumes-from 标记来创建一个加载 database 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。命令如下:
[root@luyan ~]# docker run --volumes-from database -v $(pwd):/backup ubuntu:latest tar -cvf /backup/backup.tar /database
4、解压并查看文件
[root@luyan ~]# tar -xvf backup.tar
database/
database/ly01/
database/ly02/
[root@luyan ~]# ls database/
ly01 ly02
5、数据恢复
如果要恢复数据到一个容器,首先创建一个带有空数据卷的容器database2
[root@luyan ~]# docker run -v /database --name database2 ubuntu:latest /bin/bash
然后创建另一个容器,挂载 database2 容器卷中的数据卷,并使用tar 解压备份文件到挂载的容器卷中
[root@luyan ~]# docker run --volumes-from database2 -v $(pwd):/backup ubuntu:latest tar -xvf /backup/backup.tar
database/
database/ly01/
database/ly02/
6、数据迁移
为了查看/验证恢复的数据,可以再启动一个容器挂载同样的容器卷来查看
[root@luyan ~]# docker run --volumes-from database2 ubuntu:latest /bin/ls /database
ly01
ly02
图3.4.2-1 数据备份,解压并查看文件
图3.4.2-2 数据恢复并解压文件
图3.4.2-3 数据迁移
3.5 掌握Docker Swarm集群的自动编排和发现功能
3.5.1 Docker Swarm环境安装
1、分别在luyan和luyan02两台主机上进行这些操作
1)修改主机名
#hostnamectl set-hostname luyan
#hostnamectl set-hostname luyan02
2)建立主机映射关系
[root@luyan ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.5 luyan
192.168.1.7 luyan02
3)关闭防火墙
[root@luyan ~]# iptables -F
[root@luyan ~]# iptables -X
[root@luyan ~]# iptables -Z
[root@luyan ~]# /usr/sbin/iptables-save
4)在/usr/lib/systemd/system/docker.service服务的配置文件里加入端口监听,实现监听同一端口
[root@luyan ~]# vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
–insecure-registry 192.168.1.5:5000
5)重新启动docker
[root@luyan ~]# systemctl daemon-reload
[root@luyan ~]# systemctl restart docker
6)验证端口监听状态
[root@luyan ~]# netstat -anlp | grep 2375
tcp6 0 0 :::2375 :: LISTEN 1517/dockerd
2、下载swarm镜像和busybox
[root@luyan ~]# docker pull swarm
[root@luyan ~]# docker pull busybox
3、配置集群
[root@luyan ~]# cd swarm6-19/
[root@luyan swarm6-19]# ls
cluster
[root@luyan swarm6-19]# cat cluster
192.168.1.5:2375
192.168.1.7:2375
[root@luyan swarm6-19]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 1c35c4412082 2 weeks ago 1.22MB
swarm latest ff454b4a0e84 2 years ago 12.7MB
ansible/ubuntu14.04-ansible latest 4621d4fe2959 4 years ago 461MB
3.5.2 启动swarm集群
1、在luyan主机上启动一台swarm容器测试
[root@luyan swarm6-19]# docker -H 192.168.1.5:2376 run -idt busybox
[root@luyan swarm6-19]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50aa79801b60 swarm “/swarm manage file:…” 3 minutes ago Up 3 minutes 0.0.0.0:2376->2375/tcp eager_kepler
2、重新启动一个swarm容器,去查看master主机上面查看是否成功
[root@luyan swarm6-19]# docker -H 192.168.1.5:2376 run -idt busybox
e37728ac7027fce6274f2205e54a8e14cbd64b62afb01f9dbc965136758ce7da
在另一台主机luyan02上查看
[root@luyan02 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e37728ac7027 busybox “sh” About a minute ago Up 48 seconds hardcore_cray
3、循环创建6个nginx容器,实现自动编配
[root@luyan ~]# for i in seq 1 6;do docker -H 192.168.1.5:2376 run -idt busybox;done
fcd7fc9897e1b455be08d218db60186895ff735ffe7c531215dde99687edcefc
847284abe07334b266b45004f6acc184e2934dce24a66de5ab854c6428b18229
92138929e4151ce5b19aa5f8ddd65dba4d3782e44462bdc0d894ccc3b9f22fed
5c175443bbd71f3e455b3c627a7291f7a11d5da7b2e5f62a4c3db98b1f40c6e4
15fd184a820a849927b7a48c3697729a4ac6b1049693ae4127ab7f59e9ebec7d
4dd7ac3fea6a28d3670aaa00dafa2e3f607ec80e5ff415bedc2fb5fa3b00fd3c
4、验证自动编配结果,查看nginx容器在集群里分布的位置
[root@luyan ~]# docker -H 192.168.1.5:2376 ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4dd7ac3fea6a busybox “sh” 12 minutes ago Up 12 minutes luyan02/hardcore_nash
15fd184a820a busybox “sh” 12 minutes ago Up 4 minutes luyan/hardcore_hermann
5c175443bbd7 busybox “sh” 12 minutes ago Up 12 minutes luyan02/magical_lamport
92138929e415 busybox “sh” 12 minutes ago Up 4 minutes luyan/pensive_mccarthy
847284abe073 busybox “sh” 12 minutes ago Up 12 minutes luyan02/kind_blackwell
e37728ac7027 busybox “sh” 37 minutes ago Up 36 minutes luyan02/hardcore_cray
50aa79801b60 swarm “/swarm manage file:…” 41 minutes ago Up 4 minutes 192.168.1.5:2376->2375/tcp luyan/eager_kepler
5、查询集群内部容器活动状态
[root@luyan ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
xfpfn7sp2uzi1ush9scf7cetc * luyan Ready Active Leader 19.03.11
6、安装 Portainer
[root@luyan ~]# docker volume create portainer_data
portainer_data
[root@luyan ~]# docker run -d -p 9000:9000 --name portainer --restart=“always” -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/docker/portainer:/data portainer/portainer
Unable to find image ‘portainer/portainer:latest’ locally
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
b8084bf83dcf: Pull complete
Digest: sha256:55c7614b1ad61eabc27214299c42d41bb49e5ef78238c0e5783031f041499284
Status: Downloaded newer image for portainer/portainer:latest
4d017774427b3b2f680f5109d342a61064fa6da6ec8217aea600aa8deaa993e3
[root@luyan ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d017774427b portainer/portainer “/portainer” 3 minutes ago Up 2 minutes 0.0.0.0:9000->9000/tcp portainer
7、访问地址
http://192.168.1.5:9000
图3.5.2-1 在1.5主机上分布了两个busybox
图3.5.2-2 在1.7主机上分布了四个busybox
图3.5.2-3 安装 Portainer界面图



