安装Portainer
1.Portainer介绍
Portainer是一个开源、轻量级Docker管理用户界面,基于Docker API,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。
2.安装docker环境及安装Portainer
#1.安装docker环境
[root@docker ~]# yum install docker -y
#2.启动docker
[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl enable docker
#3.下载Portainer镜像
[root@docker ~]# docker search portainer #查看portainer镜像
[root@docker ~]# docker pull portainer/portainer
#4.查看镜像
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/portainer/portainer latest 2869fc110bf7 12 days ago 78.6 MB
#5.上传汉化包(如果不需要汉化,第5步可以省略)
[root@docker ~]# ls
public.zip
#绝压至跟目录下
[root@docker ~]# unzip public.zip -d /
[root@docker /]# ls
bin boot dev etc home lib lib64 media mnt opt proc public root run sbin srv sys tmp usr var
#不用汉化部署命令
#创建数据卷
[root@dockers ~]# docker volume create portainer_data
portainer_data
#启动容器命令
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name prtainer-test portainer/portainer
#6.本次只部署单机版,命令如下(汉化版)
[root@dockers ~]# docker volume create portainer_data
portainer_data
[root@docker ~]# docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-test portainer/portainer
#Portainer连接其他docker的宿主机也比较简单,不过需要配置下docker,将docker的tcp连接方式打开。命令如下
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current \
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
systemctl daemon-reload
systemctl restart docker
#注意,防火墙和selinux需要关闭
#注意(报错处理方法)
[root@dockers ~]# docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-test portainer/portainer
WARNING: IPv4 forwarding is disabled. Networking will not work.
8bd2fd5a1794f25a87a87f934413201a10fdf938b299440b79682a7a19cfba0c
[root@dockers ~]# vim /usr/lib/sysctl.d/00-system.conf
#添加
net.ipv4.ip_forward=1
#重启网卡
[root@dockers ~]# systemctl restart network
参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
–restart :标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。
–restart=always:自动重启该容器
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录
–name prtainer-test : 给容器起名为portainer-test
#7.使用docker ps -a 查看进程
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
f7510fb1fa6f portainer/portainer "/portainer" 27 minutes ago Up 27 minutes
PORTS NAMES
0.0.0.0:9000->9000/tcp prtainer-test
**在浏览器输入部署服务器的IP:9000,回车,显示如下界面:**首次登录需要注册用户,给用户admin设置密码,如下图:
注意:从上图可以看出,有提示需要挂载本地 /var/run/docker.socker与容器内的/var/run/docker.socker连接。因此,在启动时必须指定该挂载文件。
错误处理
汉化版
进入后可以对容器、镜像、网络、数据卷等进行管理,如下图:
2.1 安装docker-ce-17.12.1.ce
#安装docker-ce-17.12.1.ce
yum remove docker -y
yum remove docker docker-common docker-selinux docker-engine -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce-17.12.1.ce -y
3.集群运行
1.Swarm简介
Swarm项目,通过把多个Docker Engine聚集在一起,形成一个大的docker-engine,对外提供容器的群集服务。同时,这个群集对外提供Swarm API,用户可以像使用Docker Engine一样使用Docker群集。
Swarm是个一套较为简单的工具,用以管理Docker群集,使得Docker群集暴露给用户时相当于一个虚拟的整体。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(dockerclient in go,docker_py,docker等)均可以直接与Swarm通信,Swarm几乎全部用Go语言来完成开发的。
2.Swarm工作原理
1、Swarm
群集的管理和编排是使用嵌入到Docker引擎的SwarmKit,可以在Docker初始化时启动Swarm模式或者加入已存在的Swarm
2、Node
一个节点(node)是已加入到swarm的Docker引擎的实列当部署应用到集群,你将会提交服务定义到管理节点,接着Manager管理节点调度任务到worker节点,manager节点还执行维护集群的状态的编排和群集管理功能,work节点接收并执行来自manager节点的任务。通常,manager节点也可以是worker节点,work节点会报告当前状态给manager节点。
3、服务(Service)
服务是要在work节点上要执行任务的定义,它在工作这节点上执行,当创建服务的时,需要指定容器镜像。
4、任务(Task)
任务是在docker容器中执行的命令,manager节点根据指定数量的任务副本分配任务给work节点。
3.Swarm各个模块的功能
docker swarm:集群管理,子命令由init,join,leave,updata。(docker swarm -help查看帮助)
docker service:服务创建,子命令由create,inspect,update,remove,tasks。(docker service -help查看帮助)
node是加入到swarm集群中的一个docker引擎实体,可以在一台物理机上运行多个node,node分为:
1)Manager node(管理节点):执行集群的管理功能,维护集群的状态,选觉一个leader节点去执行调度任务。
2)Work node(工作节点):接收和执行任务,参与容器集群负载调度,仅用于承载task。
service服务:一个服务是工作节点上执行任务的定义。创建一个服务,制定了容器所使用的镜像和容器运行的命令。
task任务:一个任务 包含了一个容器及其运行的命令。task是service的执行实体,task启动docker容器并在容器中执行任务。
4.swarm部署
1、系统环境
两台centos 7分别对应swarm01和swarm02
swarm01:192.168.35.9
swarm02:192.168.35.10
2、修改主机名
hostnamectl set-hostname swarm01
hostnamectl set-hostname swarm02
vi /etc/hosts //分别修改hosts文件
192.168.35.9 swarm01
192.168.35.10 swarm02
3、安装docker(每台都要装)
yum install docker -y
4、修改docker监听端口
Swarm是通过监听2375端口进行通信的,所以在使用Swarm进行集群管理之前,需要设置一下2375端口的听。所有主机节点docker开启2375监听,docker版本不同,配置方式不一样。
vi /lib/systemd/system/docker.service
在ExecStart加入:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl start docker //启动docker
systemctl enable docker
tcp6 0 0 :::2375 :::* LISTEN 8045/dockerd-curren
netstat -anput | grep 2375 //查看监听端口
5、swarm安装(两台分别安装)
[root@swarm01 ~]# docker pull swarm //从docker仓库拉取swarm
[root@swarm01 ~]# docker images 查看是否下载成功
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/swarm latest ff454b4a0e84 22 months ago 12.7 MB
docker swarm init --advertise-addr 192.168.35.9 //初始化Swarm
–advertis-addr:swarm中的work节点使用此IP地址与manager联系
上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。
6添加集群节点
在swaram02机器上执行以下命令
docker swarm join \
--token SWMTKN-1-4kjius0d5a7fbnfq9yik9uyim4jv99dlteb7dgbiiz81do1wk3-dcmknnk23puv8ui8uaikxuidq \
192.168.35.9:2377
7升级或降级节点(只能在主节点上)
docker node promote swarm02 //将swarm02升级为主节点
docker node demote swarm01 //将swarm01降级为工作节点
docker node list //在swarm02上查看
8创建swarm集群网络(swarm02上)
docker network create --driver overlay skynet
docker network ls //查看网络
9swarm部署http(在主节点swarm02上)
docker service create -p 80:80 --name webserver --replicas 4 httpd
--name:服务名称
--replicas:服务副本集个数
-p:端口映射
docker service ls //查看服务列表
docker service ps webserver | grep Running //查看具体服务开启情况
web分别访问192.168.80.100和192.168.80.110
注意:swarm02上并没有部署httpd但是可以访问网页,说明swarm01节点接收了主节点的任务部署。
10 swarm图像化管理(swar02上)
docker pull portainer/portainer //拉取图像化管理镜像
docker run -d -p 9000:9000 --restart=always --name prtainer-test portainer/portainer //启动镜像
#启动镜像(汉化版,前面写到)
[root@dockers ~]# docker volume create portainer_data
portainer_data
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-test portainer/portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-test portainer/portainer
swarm选项图
ner-test portainer/portainer
[外链图片转存中...(img-VcyOmJB6-1597479055222)]
[外链图片转存中...(img-edHgCqOo-1597479055223)]
[外链图片转存中...(img-h7omuOmm-1597479055225)]
[外链图片转存中...(img-591Qr9Ec-1597479055227)]
[外链图片转存中...(img-N1P6FvlV-1597479055228)]
[外链图片转存中...(img-l2LfeLio-1597479055229)]
swarm选项图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200815161910267.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTg1ODQzOQ==,size_16,color_FFFFFF,t_70#pic_center)