使用前請(qǐng)先安裝docker和docker-compose,同時(shí)完成docker-swarm集群初始化
一、portainer-ce部署
部署portainer-ce實(shí)時(shí)管理本機(jī)docker,使用docker-compose一鍵拉起
docker-compose.yml
version: '3'
services:
portainer:
container_name: portainer
#image: portainer/portainer
image: 6053537/portainer-ce
#image: portainer/portainer-ce
command: -H unix:///var/run/docker.sock
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
restart: always
volumes:
portainer_data:
6053537/portainer-ce
此鏡像為中文版本,效果如下
管理本地docker比較簡(jiǎn)單,直接使用volumes
掛載目錄即可 /var/run/docker.sock:/var/run/docker.sock
二、管理遠(yuǎn)程docker和docker-swarm步驟
1、開(kāi)啟docker遠(yuǎn)程訪問(wèn)
1)低安全性開(kāi)啟(不推薦)
直接在守護(hù)進(jìn)程服務(wù)文件后添加 -H tcp://0.0.0.0:2375
配置即可
# 修改守護(hù)進(jìn)程文件
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)高安全性開(kāi)啟(推薦)
需要先行生成TLS證書文件
這里直接提供一份大佬寫好的TLS證書生成腳本
2.1、使用gen-TLS.sh腳本生成TLS證書
在/etc/docker/certs
創(chuàng)建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
腳本內(nèi)容如下
#!/bin/bash
#
# -------------------------------------------------------------
# 自動(dòng)創(chuàng)建 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")" || exit
pwd
)"/"
echo "當(dāng)前目錄:${NOW_PATH} 證書文件將保存在此文件夾下"
read -p "請(qǐng)輸入證書使用的 IP 地址或者 HOST: " HOST
#
echo "您輸入的是:${HOST} 證書只能在這個(gè) IP 或者 HOST 下使用,證書密碼和輸入的一致"
# --[INIT PARAMETER]------------------------------
PASSWORD="$HOST"
COUNTRY="CN"
STATE="$HOST"
CITY="$HOST"
ORGANIZATION="$HOST"
ORGANIZATIONAL_UNIT="Dev"
COMMON_NAME="$HOST"
EMAIL="$HOST@docker-tls.com"
# --[END]--
# Generate CA key
openssl genrsa -aes256 -passout "pass:$PASSWORD" -out "ca-key.pem" 4096
# Generate CA
openssl req -new -x509 -days 365 -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 -days 365 -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 -days 365 -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
# check
if [ -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" ]; then
echo "證書生成完成"
echo "客戶端使用文件:key.pem ca.pem cert.pem"
echo "Docker 端使用文件:ca.pem server-cert.pem server-key.pem"
echo "Docker 推薦配置內(nèi)容:-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"
else
echo "證書生成不完成,請(qǐng)檢查配置和根據(jù)錯(cuò)誤日志排查"
fi
執(zhí)行此腳本會(huì)提升讓輸入IP
,此IP為你開(kāi)啟遠(yuǎn)程docker權(quán)限的IP,被管理的遠(yuǎn)程docker的IP
腳本執(zhí)行結(jié)果如下
按照腳本提示
客戶端使用文件:key.pem ca.pem cert.pem
Docker端使用文件:ca.pem server-cert.pem server-key.pem
這里客戶端指portainer
,我們將會(huì)在portainer中使用到key.pem ca.pem cert.pem
這三個(gè)證書文件文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-841799.html
2.2、配置使用TLS證書開(kāi)啟docker遠(yuǎn)程訪問(wèn)權(quán)限
# 修改守護(hù)進(jìn)程文件
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中添加遠(yuǎn)程docker
這里以第二項(xiàng)docker-swarm
為例
選著API
這種方式,填寫IP和PORT,勾選TLS,將腳本生成的三個(gè)證書文件key.pem ca.pem cert.pem
對(duì)應(yīng)添加
成功后在首頁(yè)即可看到相關(guān)信息如下
參考:Docker Swarm(十)Portainer 集群可視化管理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-841799.html
到了這里,關(guān)于portainer管理遠(yuǎn)程docker和docker-swarm集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!