12. Docker可视化工具

目录

1、前言

2、Docker UI

2.1、部署Docker UI

2.2、管理容器

3、Portainer

3.1、部署Portainer

3.2、管理容器

3.3、添加远程Docker

4、Shipyard


1、前言

Docker 提供了命令行工具来管理 Docker 的镜像和运行 Docker 的容器。我们也可以使用图形工具来管理 Docker。目前,主流的 Docker 图形工具有 Docker Ul、Portainer 和 Shipyard。

2、Docker UI

Docker UI是一款最简单的,单机环境中的管理Docker的图形工具,适合初学者和小型Docker管理。

优点:

  • 支持容器管理
  • 稳定性高
  • 可动态显示容器间的关系图

缺点:

  • 管理页面无账户体系,缺乏安全性
  • 对于容器的管理缺乏权限控制,任何人都可以对容器进行一些敏感操作
  • 不支持多主机和Swarm集群

2.1、部署Docker UI

安装部署Docker UI工具需要先从镜像仓库中拉取:

docker pull uifd/ui-for-docker

然后启动即可:

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

启动成功后,我们即可访问IP:9000地址访问。需要注意的是,这里需要把docker.sock挂载出来,因为它是Docker守护进程默认监听的UNIX域套接字文件。容器中的进程可以通过它与Docker守护进程进行通信。

2.2、管理容器

从Docker UI主界面中,我们看到导航菜单可以对容器,容器的网络模式,镜像,以及挂载卷进行管理。

点击进入Containers中:

可以看到我们部署的所有容器,选择一个容器进去,如xxl-job:

可以看到里面已经配置的基础容器信息,包括挂载目录,端口映射等。同时提供了删除容器,关闭容器,重启容器等可视化操作。

3、Portainer

Portainer 是一个轻量级的图形工具。使用 Portainer 可以轻松管理不同的 Docker环境。Portainer 的部署和使用都非常简单,它由一个可以运行在任何 Docker 引擎上的容器组成。Portainer 可以管理 Docker 的镜像、容器、数据卷和网络等。

优点:

  • 既可以管理单机环境,也可以管理Swarm集群
  • 提供了用户的登录界面
  • 可以为用户分配某个容器

缺点:

暂未发现

3.1、部署Portainer

从镜像仓库中拉取Portainer:

docker pull portainer/portainer

创建数据卷:

docker volume create portainer_db

启动Portainer:

docker run -d --name docker-web -p 9000:9000 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v portainer_db:/data 
    portainer/portainer

访问IP:9000进入Portainer页面:

3.2、管理容器

输入密码确认后进入页面。

点击Containers,依然可以看到我们启动的几个容器。点击容器详情,也可以查看我们的容器基础信息,同时也可以进行容器管理操作。

点击容器如xxl-job详情:

还可以创建新用户,并给容器指定用户权限。在容器详情中:

3.3、添加远程Docker

点击左侧Environments,进入环境管理页面,点击Add environment。

由于我们使用的是单机版的Docker,所以选择第一个,点击Start Wizard。

在远程主机上运行上面的docker agent命令,启动后。下方的Environment address输入远程主机IP:9001端口,点击Connect。成功连接上去后,在Home下就多了一个Docker管理项:

接着选择我们要的Docker环境就可以进行远程管理了。这样的话,无需每台主机都安装Portainer,只需要一台服务器安装后,就可以管理多台远程主机。

4、Shipyard

Shipyard 是一个集成管理 Docker 镜像、容器和镜像仓库的系统,支持跨多个主机的 Dock容器的集群。

Shipyard 提供的主要功能包括:

  • 镜像管理、容器管理、节点管理等
  • 节点的动态扩展
  • 容器监控的可视化管理
  • 在线的命令行终端

Shipyard目前使用比较小众,这里就不过多介绍。现在我这边的容器管理,基本使用的是Portainer,基本满足我们日常开发和运维所需。