0


【运维】portainer管理远程docker和docker-swarm集群

使用前请先安装docker和docker-compose,同时完成docker-swarm集群初始化

一、portainer-ce部署

部署portainer-ce实时管理本机docker,使用docker-compose一键拉起

docker-compose.yml

version:'3'services:portainer:container_name: portainer
    #image: portainer/portainerimage: 6053537/portainer-ce
    #image: portainer/portainer-cecommand:-H unix:///var/run/docker.sock
    ports:- 9000:9000volumes:- /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    restart: always
volumes:portainer_data:
6053537/portainer-ce

此镜像为中文版本,效果如下
在这里插入图片描述
管理本地docker比较简单,直接使用

volumes

挂载目录即可

/var/run/docker.sock:/var/run/docker.sock

二、管理远程docker和docker-swarm步骤

1、开启docker远程访问

1)低安全性开启(不推荐)

直接在守护进程服务文件后添加

 -H tcp://0.0.0.0:2375

配置即可

# 修改守护进程文件vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

2)高安全性开启(推荐)

需要先行生成TLS证书文件
这里直接提供一份大佬写好的TLS证书生成脚本

2.1、使用gen-TLS.sh脚本生成TLS证书

/etc/docker/certs

创建

gen-TLS.sh 
mkdir-p /etc/docker/certs &&cd /etc/docker/certs &&vi gen-TLS.sh 

chmod +x /etc/docker/certs/gen-TLS.sh

./gen-TLS.sh
gen-TLS.sh 

脚本内容如下

#!/bin/bash## -------------------------------------------------------------# 自动创建 Docker TLS 证书# wget https://gitee.com/dromara/Jpom/raw/master/script/docker-tls.sh# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# systemctl daemon-reload && systemctl restart docker# -------------------------------------------------------------# 以下是配置信息# --[BEGIN]------------------------------NOW_PATH=$(cd"$(dirname"$0")"||exitpwd)"/"echo"当前目录:${NOW_PATH} 证书文件将保存在此文件夹下"read-p"请输入证书使用的 IP 地址或者 HOST: " HOST
#echo"您输入的是:${HOST} 证书只能在这个 IP 或者 HOST 下使用,证书密码和输入的一致"# --[INIT PARAMETER]------------------------------PASSWORD="$HOST"COUNTRY="CN"STATE="$HOST"CITY="$HOST"ORGANIZATION="$HOST"ORGANIZATIONAL_UNIT="Dev"COMMON_NAME="$HOST"EMAIL="[email protected]"# --[END]--# Generate CA key
openssl genrsa -aes256-passout"pass:$PASSWORD"-out"ca-key.pem"4096# Generate CA
openssl req -new-x509-days365-key"ca-key.pem"-sha256-out"ca.pem"-passin"pass:$PASSWORD"-subj"/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$COMMON_NAME/emailAddress=$EMAIL"# Generate Server key
openssl genrsa -out"server-key.pem"4096# Generate Server Certs.
openssl req -subj"/CN=$COMMON_NAME"-sha256-new-key"server-key.pem"-out server.csr
rm-f extfile.cnf
echo"subjectAltName = DNS.1:$HOST,IP.1:127.0.0.1,IP.2:$HOST">>extfile.cnf
echo"extendedKeyUsage = serverAuth">>extfile.cnf
openssl x509 -req-days365-sha256-in server.csr -passin"pass:$PASSWORD"-CA"ca.pem"-CAkey"ca-key.pem"-CAcreateserial-out"server-cert.pem"-extfile extfile.cnf
# Generate Client Certs.rm-f extfile.cnf
openssl genrsa -out"key.pem"4096
openssl req -subj'/CN=client'-new-key"key.pem"-out client.csr
echo"extendedKeyUsage = clientAuth">>extfile.cnf
openssl x509 -req-days365-sha256-in client.csr -passin"pass:$PASSWORD"-CA"ca.pem"-CAkey"ca-key.pem"-CAcreateserial-out"cert.pem"-extfile extfile.cnf
rm-f client.csr server.csr ca.srl extfile.cnf

# checkif[-f"${NOW_PATH}key.pem"-a-f"${NOW_PATH}ca.pem"-a-f"${NOW_PATH}ca-key.pem"-a-f"${NOW_PATH}server-cert.pem"-a-f"${NOW_PATH}server-key.pem"];thenecho"证书生成完成"echo"客户端使用文件:key.pem ca.pem cert.pem"echo"Docker 端使用文件:ca.pem server-cert.pem server-key.pem"echo"Docker 推荐配置内容:-H tcp://0.0.0.0:2375 --tlsverify --tlscacert=${NOW_PATH}ca.pem --tlscert=${NOW_PATH}server-cert.pem --tlskey=${NOW_PATH}server-key.pem"elseecho"证书生成不完成,请检查配置和根据错误日志排查"fi

执行此脚本会提升让输入

IP

,此IP为你开启远程docker权限的IP,被管理的远程docker的IP
在这里插入图片描述
脚本执行结果如下
在这里插入图片描述
按照脚本提示

客户端使用文件:key.pem ca.pem cert.pem
Docker端使用文件:ca.pem server-cert.pem server-key.pem

这里客户端指

portainer

,我们将会在portainer中使用到

key.pem ca.pem cert.pem

这三个证书文件

2.2、配置使用TLS证书开启docker远程访问权限
# 修改守护进程文件vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --tlsverify--tlscacert=/etc/docker/certs/ca.pem --tlscert=/etc/docker/certs/server-cert.pem --tlskey=/etc/docker/certs/server-key.pem -H tcp://0.0.0.0:2375

2、在portainer中添加远程docker

在这里插入图片描述
这里以第二项

docker-swarm

为例
在这里插入图片描述
选着

API

这种方式,填写IP和PORT,勾选TLS,将脚本生成的三个证书文件

key.pem ca.pem cert.pem

对应添加
在这里插入图片描述
成功后在首页即可看到相关信息如下
在这里插入图片描述
参考:Docker Swarm(十)Portainer 集群可视化管理

标签: docker 容器 运维

本文转载自: https://blog.csdn.net/UberSoldier/article/details/136572158
版权归原作者 chenzfp 所有, 如有侵权,请联系我们删除。

“【运维】portainer管理远程docker和docker-swarm集群”的评论:

还没有评论