GVKun编程网logo

使用Portainer集中管理多地域内网运行的Docker实例(docker管理工具portainer和)

15

最近很多小伙伴都在问使用Portainer集中管理多地域内网运行的Docker实例和docker管理工具portainer和这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展6、Do

最近很多小伙伴都在问使用Portainer集中管理多地域内网运行的Docker实例docker管理工具portainer和这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展6、Docker 图形化管理 (Portainer)、Docker - 可视化管理工具总结 - 推荐使用 Portainer、Docker 可视化管理 portainer、docker 可视化管理工具 portainer 简介等相关知识,下面开始了哦!

本文目录一览:

使用Portainer集中管理多地域内网运行的Docker实例(docker管理工具portainer和)

使用Portainer集中管理多地域内网运行的Docker实例(docker管理工具portainer和)

1. 单机运行的Docker

容器化部署是现在进行时,开源应用大多数支持容器化部署 在少量机器的场景下往往采用docker cli 和 docker-compose管理,进行“单机式管理” 机器稍多点会采用Docker Swarm群集的方式,毕竟k8s稍重 如果有更多的机器情况下一般会采用k8s的方式 在个人、创业公司、小团队的场景下我们往往在多个云、家里、vps上拥有少量虚拟机服务器,这些服务器上都运行了docker实例 虽然我们也可以用公网vpn、zerotier等方式打通各个地域的机器形成一个内网,从而构建“群集”,但实际情况是没那么多带宽,从而无法“负载均衡”,所以实际的实际还是独立使用 受限制于公网带宽很小,只能独立使用 我们也拥有一些4G移动流量接入这种EDGE边缘场景的情况,这些IoT上也运行着Docker实例 那么这些NAT内网环境下的Docker实例,公网IP环境下的Docker实例,是否能集中管理? 当然可以,用Portainer就挺方便

2. 用Portainer作为Docker实例管理平台实战步骤

2.1 主节点-Portainer server主控安装

选一个7x24小时且有公网IP的节点运行Portainer server主控

docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /data/appdata/portainer:/data portainer/portainer

9000端口为web管理界面端口 8000端口为Agent接入端口 这2个端口公网IP防火墙都必须放行

浏览器打开web管理界面 http://Portainer server主控公网IP:9000

初次访问设置一个密码,设置密码后需要选择连接docker的方式 选第一个Local 然后点击Connect 默认进入Home菜单,点击这个Local本地docker实例进入其他管理

Portainer官方安装手册参考

2.2 配置https nginx代理(可选)

如果不配置https可跳过本节 http://你的公网IP:9000 默认没有https不安全 规划一个域名用于https访问例如https://portainer.iamle.com 用nginx作为接入反向代理到 http://portainerip:9000 下面为示例nginx portainer配置(其中包含需要的websocket proxy)

# portainer.iamle.com.conf
map $http_upgrade $connection_upgrade {
    default Upgrade;
    ''''      close;
}
upstream portainer {
    server 127.0.0.1:9000;
}
server {
		listen       80;
		server_name portainer.iamle.com;
		return      301 https://$server_name$request_uri;
}
server {

                listen 443 ssl http2;
		server_name portainer.iamle.com;

                ssl_certificate         ssl/iamle.com.cer;
                ssl_certificate_key     ssl/iamle.com.key;
            	#ssl_session_cache           shared:SSL:10m;
                #ssl_session_timeout         10m;
                #ssl_session_tickets         off;

                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers         HIGH:!aNULL:!MD5:!EXPORT56:!EXP;
                ssl_prefer_server_ciphers on;

		location / {
                    proxy_set_header Host              $host;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header X-Forwarded-Port  $server_port;
                    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP         $remote_addr;
                    proxy_set_header X-Request-Id $request_id;
                    proxy_set_header Upgrade           $http_upgrade;
                    proxy_set_header Connection        $connection_upgrade;
                    proxy_read_timeout 60m;
                    proxy_send_timeout 60m;
                    proxy_http_version 1.1;
                    proxy_pass http://portainer;
                    break;
		}


        error_log   /data/logs/portainer.iamle.com-error.log;
        access_log  /data/logs/portainer.iamle.com.log access;

}

2.3 主节点-配置一个在NAT内网Agent客户端

前面我们已经配置好一个具有公网IP的Portainer管理控制节点 那么现在把内网(NAT、IoT)、公有云、vps等运行的Docker实例来接入控制节点管理

一图胜千言,官方介绍图 图中这个Portainer管理了2个内网的Agent 其中一个是个Swarm群集,另外一个是个单机

Portainer server上增加一个Edge Agent Endpoints菜单 》 Add endpoint 》 Edge Agent

Name:为自定义 Portainer server URL:默认为当前Portainer server ip (如果用nginx配置了https可以使用https不加端口号) 》 Add endpoint

增加端点后出现

部署客户端agent 有2种选择 Standalone 和 Swarm 如果已经组过Swarm那么选Swarm,默认就是Standalone 先点击 “Copy command” 复制命令,在Agent客户端去执行 Public IP: 如果有可以设置,这样在以后部署了docker容器暴露的端口可以自动生成url

2.4 被管理节点-需要被管理的Docker实例客户端机

在被管理的客户端终端上执行(内网(NAT、IOT)、公网环境都可以,只要能连接上我们的Portainer server) 本例内网1台ip为 192.168.0.8的机器

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes -v /:/host --restart always -e EDGE=1 -e EDGE_ID=6ad0f1ff-6fea-4710-97e2-513ef1066fd8 -e CAP_HOST_MANAGEMENT=1 -p 8000:80 -v portainer_agent_data:/data --name portainer_edge_agent portainer/agent:1.5.1

访问 http://192.168.0.8:8000(如果有公网ip用公网ip) 打开后会有个输入框 输入上一步获得的Join token 点击Submit 出现 Agent setup OK. You can close this page. 代表完成agent接入

回到 Portainer server管理界面等待上线

点击 iamle-lan-01 等待几秒钟

这样我们就可以管理多个docker实例了

3. 贴士

  • 如果agent运行不起来,无限重启 需要根据docker logs portainer_edge_agent 获取到的错误信息排查, 官方github issue是个好去处 另外发现2019年10月19日16:55:01 pull 下来的portainer/agent:latest 也运行不起来 改为 portainer/agent:1.5.1正常

  • Stacks粘贴docker-compose.yml进来后一直报version版本不对 目前只支持version 2 改为2即可

4. 参考

Portainer Edge Agent 官方发布 Portainer内网边缘节点配置说明书PDF

> 流水理鱼 发布!

6、Docker 图形化管理 (Portainer)

6、Docker 图形化管理 (Portainer)

一、Portainer 简介

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

Portainer 运行方式有两种方式:

  1. 单机运行(管理单个 Docker)
  2. 集群运行(管理 Swarm 集群)

本次主要实战单机运行,即用 Portainer 来管理单个 Docker。

 

二、Portainer 安装

如果仅有一个 docker 宿主机,则可使用单机版运行,Portainer 单机版运行十分简单,只需要一条语句即可启动容器,来管理该机器上的 docker 镜像、容器等数据。

1、创建数据卷

数据卷用于保存 Portainer 上的数据。

[root@localhost ~]# docker volume create portainer_data

 

2、运行容器

[root@localhost ~]# docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data/ portainer/portainer
ed7977085b6a2fead11391e64ad11a898bfb94d0eecc7b4f2988491c8441ce1c

  参数说明:

  1. -d:容器在后台运行;
  2. -p 9000:9000 :宿主机 9000 端口映射容器中的 9000 端口
  3. -v /var/run/docker.sock:/var/run/docker.sock :把宿主机的 Docker 守护进程 (Docker daemon) 默认监听的 Unix 域套接字挂载到容器中;
  4. -v portainer_data:/data :通过宿主机 portainer_data 数据卷持久化容器的 /data 目录;

3、查看容器

 

4、访问 portainer

 

5、进入管理页

选择管理本地 Docker 主机

 

 点击进入 Dashboard

进入后,我们可以在图形化界面操作所有 Docker 操作:

  • 容器管理
  • 镜像管理
  • 网络管理
  • 存储卷管理
  • 镜像仓库管理

此外,还有:

  • 用户管理
  • 自定义管理,比如自定义 logo

6、参考文档

  • 官方网站:https://portainer.io/ 
  • 官方文档:https://portainer.readthedocs.io/ 
  • 演示网址:http://demo.portainer.io 账号 admin 密码 tryportainer

Docker - 可视化管理工具总结 - 推荐使用 Portainer

Docker - 可视化管理工具总结 - 推荐使用 Portainer

对于初学 docker 的小白,一款好的可视化工具有助于快速掌握 docker 基本形态和概念,下面针对 docker 可视化工具做些总结

ui-for-docker

UI For Docker 是一个使用 Docker Remote API 的 web 接口,目的是提供一个简洁纯净的客户端实现,为了连接和管理 Docker; 该工具目前已经无人维护,建议使用下面介绍的 portainer

docker run -it -d --name docker-web --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker

image.png

Portainer

https://www.portainer.io/installation/
是一款 Docker 可视化管理工具,可让您轻松构建和管理 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中的容器。

Portainer 将管理容器的复杂性隐藏在易于使用的 UI 后面。通过消除使用 CLI、编写 YAML 或理解清单的需要,Portainer 使部署应用程序和解决问题变得如此简单,任何人都可以做到
image.png

Portainer - 架构

Portainer 由两个元素组成:Portainer 服务器和 Portainer 代理。两者都在您现有的容器化基础设施上作为轻量级容器运行。Portainer 代理应该部署到集群中的每个节点,并配置为向 Portainer 服务器容器报告。
单个 Portainer 服务器将接受来自任意数量的 Portainer 代理的连接,从而提供从一个集中式界面管理多个集群的能力。为此,Portainer Server 容器需要数据持久性。Portainer 代理是无状态的,数据被传送回 Portainer 服务器容器。

image.png

Portainer - 安装

运行下面两条命令即可。这些命令会创建一个 Portainer 专用的卷,然后在 8000 和 9000 端口创建容器并运行。

  1. 基于本地容器的部署

如果使用 Portainer 管理本地 Docker 主机的话,需要绑定 /var/run/docker.sock(这里是个知识点,涉及 docker 之间通信的问题,以及 docker 里运行 docker)

$ docker volume create portainer_data
$ docker run --name portainer  --restart always -d -p 8000:8000 -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

然后在浏览器打开对应地址,就会发现成功运行了。第一次运行的时候需要设置账号,然后选择要管理的 Docker 主机。
image.png

注意:portainer/portainer 是 Portainer v1.24.x 的镜像名,现在已弃用;从 2022 年 1 月开始,Portainer 2.0 的所有新版本都将在 portainer/portainer-ce 中发布

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.1
  1. 连接到远程容器的部署
docker run -d -p 9000:9000 --name portainer --restart always -v portainer_data:/data portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>

PS:-H 后面的 remote 是你想用 portainert 管理的 docker

添加新的容器集群环境

1. 本机连接方式

只能在创建 Portainer Server 容器时添加本地环境。部署 Portainer 后,您无法添加本地环境

第一次登陆会让选择管理的容器环境,这里可以选择本机,通过挂载 /var/run/docker.sock 和 docker 守护进程通信(如图所示),关于这部分知识后面会总结分享出来。

image.png

image.png
之后就可以看到本机上运行的 Docker 容器了,点击它们还可以进行容器的管理。

左边的条目可以管理卷、创建容器、查看主机信息等等。基本上该有的功能都有了
image.png

2. Remote 连接方式

通过该方式,可以将远程机器添加到 Portainer 服务端,统一管理远程机器上的容器环境

将 Docker Standalone 主机连接到 Portainer 时,可以使用两种方法。您可以通过 TCP 直接连接到 Docker API,也可以在 Docker Standalone 主机上安装 Portainer 代理并通过代理连接。

https://docs.portainer.io/v/ce-2.11/admin/environments/add/docker

1) 通过远程访问 TCP:2375 端口绑定环境
image.png
使用 Remote 要求被管理的主机开启 docker 守护线程监听端口
可以在 /etc/docker/daemon.json 中添加如下配置

{
 "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

2) 通过 Portainer Agent 方式管理 docker 环境
https://docs.portainer.io/v/ce-2.11/start/install/agent/docker/linux
使用 Agent 需要在要监控的主机上创建一个 portainer agent 容器

docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:2.11.1

image.png
image.png

3) 通过 Portainer Agent 方式管理 k8s 集群环境

在 k8s 集群上执行以下命令

curl -L https://downloads.portainer.io/portainer-agent-ce211-k8s-nodeport.yaml -o portainer-agent-k8s.yaml; kubectl apply -f portainer-agent-k8s.yaml

image.png

image.png

在远程 k8s 集群上部署 agent 后,在 Portainer server 上通过 nodeport 或者 targetport 进行服务配置,完成 k8s 集群的连接配置。
image.png

image.png

image.png

LazyDocker

https://github.com/jesseduffield/lazydocker

LazyDocker 是基于终端的一个可视化查询工具,支持键盘操作和鼠标点击。相比 Portainer 来说可能不那么专业,不过对于开发者来说可能反而更加好用了。因为一般开发者都是使用命令行来运行 Docker,偶尔需要图形化查看的时候,就可以使用 LazyDocker 这个工具。

Lazydocker 的具体特性如下:

  • 全视野查看 Docker 或 docker-compose 容器环境的状态
  • 查看容器或服务的日志
  • 查看容器指标的 ascii 图表,这样你会更像个开发者
  • 自定义图表以测量不同指标
  • 附加到容器 / 服务
  • 重启、删除与重新构建容器 / 服务
  • 查看给定镜像的祖先图层
  • 修剪占用磁盘空间的容器、镜像或卷

image.png

安装 LazyDocker 也非常简单,运行下面的命令即可。

docker run --rm -it -v \
/var/run/docker.sock:/var/run/docker.sock \
-v ~/.config/lazydocker:/.config/jesseduffield/lazydocker \
lazyteam/lazydocker

当然如果发现 LazyDocker 挺好用,准备经常使用的话,还可以把它做成缩写添加到 shell 配置文件中,这样就可以将它变成一个简单的命令。例如我用的是 zsh,就将下面这样添加到.zshrc 文件中。以后就可以直接用 lzd 来调用 LazyDocker 了。

echo "alias lzd=''docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker''" >> ~/.zshrc

然后就可以在终端中查看 Docker 容器、镜像和卷的信息了。LazyDocker 支持键盘操作和鼠标点击,直接用鼠标点击就可以查看对应信息了

Docker Desktop

Docker Desktop 是 Docker 官方自带的客户端。https://docs.docker.com/desktop/windows/; 如果是 windows 用户,想在 Windows 系统上运行 docker 容器,可以使用;

image.png

image.png

小结

  • Portainer 比较适合团队使用,因为他有访问控制。
  • Lazydocker 属于简单灵活的小工具,如果你不需要复杂的功能,他们比较合适,而且会让你更有程序员的感觉。
  • Docker Desktop 是 Windows/Mac 安装 Docker 时就有的,管理功能比较简单,在需要简单的集成 Kubernetes 时可以用他。

Docker 可视化管理 portainer

Docker 可视化管理 portainer

 

 

官网安装指南: 

https://portainer.readthedocs.io/en/latest/deployment.html

 

docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml

https://downloads.portainer.io/docker-compose.yml

 

docker 可视化管理工具 portainer 简介

docker 可视化管理工具 portainer 简介

目录

1、portainer介绍

2、portainer安装

(1)镜像下载

(2)容器运行


1、portainer介绍

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

 

Portainer展示:

  •  首页

       包含docker-compose、容器、镜像、卷、网络总体概况。

  • 容器

       包含容器的启、停,新增,监控,日志查看,容器控制台等功能。

  • 镜像

     包含镜像详细查看、删除、导入、导出等功能。

  • 节点管理

 

2、portainer安装

采用docker方式安装。

(1)镜像下载

[docker@docker microservice]$ docker search portainer
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
portainer/portainer              A simple to use management user interface ...   751                  
hypriot/rpi-portainer            A web interface for the Docker engine. Dea...   36                   
portainer/templates              App Templates for Portainer http://portain...   12                   
portainer/agent                  An agent used to manage all the resources ...   8                    
portainer/golang-builder         Utility to build Golang binaries.               2                    [OK]
bmoorman/portainer               Portainer [github.com/portainer/portainer]...   1                    [OK]
arpanpal010/portainer                                                            1                    
usgsastro/portainer              custom portainer install into centos7           1                    [OK]
softonic/portainer-endpoint      Allows auto register all the swarm nodes i...   1                    [OK]
dockerframework/portainer        Portainer (Simple Management UI for Docker...   1                    [OK]
rancher/portainer-agent                                                          0                    
flochtililoch/armv7l-portainer                                                   0                    
nenadilic84/portainer                                                            0                    
voltha/voltha-portainer          Portainer support for VOLTHA                    0                    
portainer/base                   Multi-stage build image to create the Port...   0                    [OK]
portainer/angular-builder        Builder image for Portainer frontend.           0                    [OK]
stefanscherer/portainer          Portainer for Windows Insider                   0                    
jiangxinshang/portainer          可在loongson的mips64el平台运行的portainer               0                    
helloysd/portainer                                                               0                    
ollijanatuinen/portainer         debug/development versions of portainer         0                    
11384eb/portainer                                                                0                    
hassioaddons/portainer                                                           0                    
j0nnylester/portainer            portainer running on a RaspBerry Pi             0                    
ekambaram/portainer              Manage your Docker hosts and Docker Swarm ...   0                    
rodjers/portainer                Swarm portainer                                 0     

[docker@docker microservice]$ docker pull portainer/portainer
Using default tag: latest
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete 
d4e5419541f5: Pull complete 
Digest: sha256:07c0e19e28e18414dd02c313c36b293758acf197d5af45077e3dd69c630e25cc
Status: Downloaded newer image for portainer/portainer:latest

(2)容器运行

[docker@docker microservice]$ docker run -p 9000:9000 --name prtainer --restart=always  -v /var/run/docker.sock:/var/run/docker.sock -d portainer/portainer
abbc9cbcf1a1866c1cb488d1da97fd49ec8069369c7a96114f41f336631ac478

至此,安装完毕,访问http://192.168.1.200:9000/ 体验吧。

 

 

我们今天的关于使用Portainer集中管理多地域内网运行的Docker实例docker管理工具portainer和的分享已经告一段落,感谢您的关注,如果您想了解更多关于6、Docker 图形化管理 (Portainer)、Docker - 可视化管理工具总结 - 推荐使用 Portainer、Docker 可视化管理 portainer、docker 可视化管理工具 portainer 简介的相关信息,请在本站查询。

本文标签: