九:Docker 管理界面 Portainer

Portainer is a lightweight management UI which allows you to easily manage your different Docker environments (Docker hosts or Swarm clusters). *Portainer* is meant to be as simple to deploy as it is to use. It consists of a single container that can run on any Docker engine (can be deployed as Linux container or a Windows native container, supports other platforms too). *Portainer* allows you to manage all your Docker resources (containers, images, volumes, networks and more!) It is compatible with the standalone Docker engine and with Docker Swarm mode.

PortainerDocker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

github 地址:https://github.com/portainer/portainer

官网:https://www.portainer.io/

9.1:portainer 安装

安装文档:https://documentation.portainer.io/v2.0/deploy/linux/#deploy-portainer-in-docker

安装:

root@Docker1:~# docker volume create portainer_data

root@Docker1:~# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

查看 portainer 容器及端口监听状态:

root@Docker1:~# docker ps -f name=portainer
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                                            NAMES
9e3cbe518cf2        portainer/portainer-ce   "/portainer"        29 seconds ago      Up 27 seconds       0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   portainer

root@Docker1:~# ss -tnlp | egrep '(8000|9000)'
LISTEN   0         20480                     *:8000                   *:*        users:(("docker-proxy",pid=2411,fd=4))                                         
LISTEN   0         20480                     *:9000                   *:*        users:(("docker-proxy",pid=2397,fd=4))

访问 Portainer:

http://192.168.1.111:9000/

首次访问需要设置 admin 密码:

docker win 管理器 docker管理界面_docker

选择管理本地 Docker:

docker win 管理器 docker管理界面_docker_02

进入后可以看到本地 Docker:

docker win 管理器 docker管理界面_docker win 管理器_03

点击进入 Local 端点,查看本地 Docker 的 容器、镜像、网络、卷等的情况:

总体情况:

docker win 管理器 docker管理界面_docker win 管理器_04

容器:

docker win 管理器 docker管理界面_nginx_05

镜像:

docker win 管理器 docker管理界面_portainer_06

网络:

docker win 管理器 docker管理界面_nginx_07

存储卷:

docker win 管理器 docker管理界面_docker win 管理器_08

9.2:Portainer 汉化

Portainer 官方不支持中文,“Portainer中文汉化项目” 提供了汉化功能;

Portainer中文汉化项目:https://www.quchao.net/Portainer-CN.html

以下步骤摘自项目:

  1. 新建文件夹命名为 public ,把 Portainer-CN.zip 解压至里面;
  2. public 文件夹传输至系统根目录;
  3. 然后按需执行以下命令;
    x86-64系统使用:

docker volume create portainer_data docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public portainer/portainer:1.20.2

ARM64系统使用:

docker volume create portainer_data docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public portainer/portainer:linux-arm64-1.20.2

新建 /public 目录,将下载的汉化包 Portainer-CN.zip 解压值 /public 目录:

root@Docker2:~# mkdir /public
root@Docker2:~# cd /public
root@Docker2:/public# rz

root@Docker2:/public# unzip Portainer-CN.zip 
root@Docker2:/public# ll
total 1912
drwxr-xr-x  7 root root    4096 Feb  3 11:47 ./
drwxr-xr-x 25 root root    4096 Feb  3 11:46 ../
drwxr-xr-x  2 root root    4096 Mar 20  2019 css/
drwxr-xr-x  2 root root    4096 Mar 20  2019 fonts/
drwxr-xr-x  2 root root    4096 Mar 20  2019 ico/
drwxr-xr-x  2 root root    4096 Mar 20  2019 images/
-rw-r--r--  1 root root    2810 Mar 20  2019 index.html
drwxr-xr-x  2 root root    4096 Mar 20  2019 js/
-rw-r--r--  1 root root 1921725 Jan 29 20:02 Portainer-CN.zip

创建 portainer_data 卷和 portainer 容器,并映射 /public 目录:

root@Docker2:/public# docker volume create portainer_data

root@Docker2:/public# docker run -d -p 9000:9000 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public portainer/portainer:1.20.2

访问 Portainer 页面,设置 admin 用户密码::

http://192.168.1.112:9000/

docker win 管理器 docker管理界面_docker win 管理器_09

选择管理本地 Docker:

docker win 管理器 docker管理界面_Docker_10

进入管理页面,已经汉化成功:

docker win 管理器 docker管理界面_portainer_11

Dashboard 查看本地 Docker 的总体情况:

docker win 管理器 docker管理界面_portainer_12

9.3:Portainer 应用

9.3.1:添加 Endpoint(端点)

Portainer 除了管理本地 Docker,也可以对其它宿主机的 Docker 进行远程管理;

dockerd 默认只监听 socket 文件,远程访问需要添加监听 tcp 的 2375 端口:

下边使用 Docker1(192.168.1.111) 服务器上的 Portainer 管理 Docker2(192.168.1.112) 上的 Docker;

Docker2 的 Dockerd 添加 2375 端口监听:

root@Docker2:~# vim /lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

root@Docker2:~# systemctl daemon-reload
root@Docker2:~# systemctl restart docker

root@Docker2:~# ss -tnlp | grep 2375
LISTEN   0         20480                     *:2375                   *:*        users:(("dockerd",pid=11010,fd=3))

Portainer 添加 Endpoint:

端点名称设为 Docker2;
Endpoint URL 为 192.168.1.112:2375;

docker win 管理器 docker管理界面_docker_13

添加成功:

docker win 管理器 docker管理界面_nginx_14

docker win 管理器 docker管理界面_nginx_15

进入 Docker2,可以查看 Docker 的相关信息和状态:

docker win 管理器 docker管理界面_nginx_16

9.3.2:添加 Registry(仓库)

为 Portainer 添加 Registry 时,先要保证 Portainer 所在的 Docker 宿主机是能访问指定的 Registry 的;

为 Docker1 的 Portainer 添加 Harbor 镜像仓库(192.168.1.121),先保证 Docker 能正常访问 Harbor:

添加 insecure-registry,重启 Docker,测试登录 Harbor 以及从 Harbor 拉取镜像;

root@Docker1:~# vim /lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.1.121

root@Docker1:~# systemctl daemon-reload
root@Docker1:~# systemctl restart docker

root@Docker1:~# docker login 192.168.1.121
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

root@Docker1:~# docker pull 192.168.1.121/nginx/centos-nginx:1.16.1
1.16.1: Pulling from nginx/centos-nginx
Digest: sha256:4a7cc6f4415f0744bd0afe034e4ae42e37ae90c4005d98cc357117e770efc9f9
Status: Image is up to date for 192.168.1.121/nginx/centos-nginx:1.16.1

Portainer 添加 Registry:

选择 Custom registry(私有/定制仓库),设置仓库名称为 Harbor,Registry URL 为 192.168.1.121;

docker win 管理器 docker管理界面_Docker_17

添加成功:

docker win 管理器 docker管理界面_docker win 管理器_18

9.3.3:使用 Portainer 启动容器

使用 Docker1 上的 Portainer 操作 Docker2 启动一个 Nginx 容器(使用的镜像为 192.168.1.121/nginx/centos-nginx:1.16.1,以顺便验证上一步添加的 Harbor 仓库是否可用);

在 Docker1 的 Portainer 界面上为 Docker2 创建容器:

容器名称为 Nginx1;
Registry 选用 Harbor;
Image 为 192.168.1.121/nginx/centos-nginx:1.16.1;
端口映射为 10080:80;

docker win 管理器 docker管理界面_nginx_19

创建成功:

docker win 管理器 docker管理界面_docker win 管理器_20

验证访问:

http://192.168.1.112:10080/

docker win 管理器 docker管理界面_nginx_21