Docker 可视化管理界面 Portainer 的部署、相关问题解决

703 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Portainer 介绍

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

github 地址:github.com/portainer/p…

官网:www.portainer.io/

基于Docker Standalone 的 Portainer 部署

  1. 拉取 portainer-ce 的镜像:

    docker pull portainer/portainer-ce:latest
    
  2. 创建 Portainer Server 将用于存储数据的卷:

    docker volume create portainer_data
    
  3. 启动 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 portainer_data:/data/portainer_data portainer/portainer-ce
    
  4. 通过 ==docker ps== 命令查看服务状态:

    root@server:~# docker ps
    CONTAINER ID   IMAGE                          COMMAND                  CREATED       STATUS      PORTS                                                                                  NAMES             
    de5b28eb2fa9   portainer/portainer-ce:latest  "/portainer"             2 weeks ago   Up 9 days   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/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 使用

访问 Portainer web 服务(xx.xx.xx.xx:9000/),首次需要设置 admin 用户密码: 在这里插入图片描述

管理本地 Docker

选择 ==Manager the local Docker environment==,点击==Connect==即可。

请添加图片描述

管理远程 Docker

Portainer 除了管理本地 Docker,也可以对其它宿主机的 Docker 进行远程管理; dockerd 默认只监听 socket 文件,远程访问需要添加监听 tcp 的 2375 端口:

  1. 查看 ==systemctl status docker== 命令 ==docker.service== 配置文件所在位置:

    root@Docker2:~# systemctl status docker
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2021-10-29 15:12:11 CST; 3min 24s ago
         Docs: https://docs.docker.com
     Main PID: 19844 (dockerd)
       Memory: 28.8M
       CGroup: /system.slice/docker.service
               ├─19844 /usr/bin/dockerd -H tcp://0.0.0.0:2375
               └─19856 docker-containerd --config /var/run/docker/containerd/containerd.toml
    ...
    
  2. Dockerd 添加 2375 端口监听:

    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
    
  3. 重载配置并重启, 然后查看端口:

    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))
    
  4. 在 Portainer 中添加 Endpoint: 请添加图片描述

==注意==:修改后在 docker 节点服务器上执行命令是出现如下情况的,可能因版本对应的 ==docker.service== 文件配置内容的有区别导致

root@Docker2:~# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

==解决==:增加 == -H unix://var/run/docker.sock == 即可。

ExecStart=/usr/bin/dockerd -H unix://var/run/docker.sock -H tcp://0.0.0.0:2375

具体功能使用

  1. 总体情况:包含环境的基本信息、镜像、网络、容器、卷的统计情况。 请添加图片描述
  2. 容器:包含启动、停止、杀死、重启、暂停、恢复、删除、添加容器等功能。 请添加图片描述
  3. 镜像:删除镜像、构建新镜像、导入镜像、导出镜像等。 请添加图片描述
  4. 网络:删除网络、创建新网络等。 请添加图片描述
  5. 存储卷:删除卷、新增卷等。 请添加图片描述