我在NAS上的服务大部分都是采用docker-compose的方式进行安装,而Portainer是一个容器镜像的可视化管理工具。本篇主要介绍Portainer的安装与汉化,以及如何远程管理威联通和群晖上的docker容器。
什么是Portianer
Portainer是一个容器镜像的可视化管理工具,利用Portainer可以轻松构建、管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。
安装Portainer
采用docker-compose的方式安装Portainer。
如图在NAS中合适的位置创建如下目录,并创建相应文件。
其中docker-compose文件如下:
---
version: "2.1"
services:
portainer:
image: portainer/portainer
container_name: portainer
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
# traefik已经配置好的情况下,可以不设置ports。
ports:
- "9999:9000"
labels:
- "traefik.enable=true"
#设定端口号
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
#设置http
- "traefik.http.routers.portainer.entrypoints=web"
- "traefik.http.routers.portainer.service=portainer"
- "traefik.http.routers.portainer.rule=Host(`portainer.dreamlyn.cn`)"
restart: unless-stopped
networks:
default:
external:
name: docker_default
在portainer目录下执行如下命令:
# 创建docker网络,如果已经有docker_default网络,则不需要。
docker network create -d bridge --attachable=true docker_default
# 启动portainer
docker-compose up -d
# 查看启动日志
docker-compose logs -f
设置Portianer
使用http://192.168.31.206:9999进入Portainer UI界面,如果配置好traefik,则使用http://portainer.dreamlyn.cn:880,如下图,设置初始密码。
进入Portainer后,点击左侧导航home出现如下界面,Portainer可自动识别本机所有的docker容器,如下图local就是本机的容器汇总。
点击local后,可在左侧选择Containers列出所有容器,并进行管理。
Portainer远程连接威联通
如果Portainer并非安装在威联通上,那么我们需要进行远程连接。
威联通的Container Station直接提供了远程访问和管理docker的方法,连接时需要支持TLS。
首先打开威联通的Container Station,选择菜单的属性,然后选择Docker凭证。点击下载按钮,将证书cert.zip文件下载到电脑上并解压,然后再把cert.zip文件上传到威联通NAS的共享文件夹中。
连接到威联通终端,进入到保存了cert.zip证书文件的目录,并使用以下命令创建docker的证书文件夹:
# 创建.docker文件夹
mkdir -pv ~/.docker
# 解压证书文件到该文件夹
unzip cert.zip -d ~/.docker
# 设置环境变量,将192.168.31.206修改为威联通的IP地址
export DOCKER_HOST=tcp://192.168.31.206:2376 DOCKER_TLS_VERIFY=1
接下来需要去Portainer中添加威联通的docker服务,进入Portainer后台菜单中选择Environments,然后点击Add environment。
选择Docker Standalone后点击Start Wizard。
在环境配置界面,连接方式选择API,Name设置为威联通或任意名字,Docker API URL设置为192.168.31.206:2376,其中192.168.31.206为威联通的IP地址,打开TLS,并上传之前下载并解压的ca.pem,cert.pem和key.pem,随后点击connect即可。
Portainer远程连接群晖
首先我们需要让群晖的docker服务允许通过TCP进行连接。用SSH连到群晖的命令行,编辑/var/packages/Docker/etc/dockerd.json。
sudo vim /var/packages/Docker/etc/dockerd.json
vim编辑器的使用方式参考这篇文章,在文件的最后添加如下代码,其中192.168.31.201
为群晖的IP地址。
"hosts" : [ "tcp://192.168.31.201:2375", "unix:///var/run/docker.sock" ]
最终文件如下图所示
使用如下命令重启群晖Docker容器:
synoservice --restart pkgctl-Docker
接下来需要去Portainer中添加群晖的docker服务,进入Portainer后台菜单中选择Environments,然后点击Add environment。
选择Docker Standalone后点击Start Wizard。
在环境配置界面,连接方式选择API,Name设置为群晖或任意名字,Docker API URL设置为192.168.31.201:2375,其中192.168.31.201为群晖的IP地址,TLS保持关闭,随后点击connect即可。
汉化Portainer
Portainer界面的英语其实都比较简单,建议直接使用英文界面,如果实在需要对Portainer进行汉化可参考下文。
修改目录如下图,添加public文件夹,用来存放portainer的网页文件。
将docker-compose.yml文件中的portainer的版本修改为1.24.2,添加public目录映射,修改后的文件如下:
---
version: "2.1"
services:
portainer:
image: portainer/portainer:1.24.2
container_name: portainer
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- ./public:/public
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9999:9000"
labels:
- "traefik.enable=true"
#设定端口号
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
#设置http
- "traefik.http.routers.portainer.entrypoints=web"
- "traefik.http.routers.portainer.service=portainer"
- "traefik.http.routers.portainer.rule=Host(`portainer.dreamlyn.cn`)"
restart: unless-stopped
networks:
default:
external:
name: docker_default
下载portainer的汉化包,这里提供1.24.2版本下载地址。
将portainer-cn.zip加压后,里面的内容拷贝到public文件夹中。
使用如下命令启动容器:
# 创建docker网络,如果已经有docker_default网络,则不需要。
docker network create -d bridge --attachable=true docker_default
# 启动portainer
docker-compose up -d
# 查看启动日志
docker-compose logs -f
使用浏览器访问portainer,就可以看到汉化后的界面了,汉化后的界面如下图所示: