##
[https://blog.csdn.net/u012586326/article/details/112343808](https://blog.csdn.net/u012586326/article/details/112343808)
## :-: Portainer 安裝與配置
## 一、介紹
? [Portainer](https://www.portainer.io/) 是一個開源、輕量級Docker管理用戶界面,基于Docker API,提供狀態顯示面板、應用模板快速部署、容器鏡像網絡數據卷的基本操作(包括上傳下載鏡像,創建容器等操作)、事件日志顯示、容器控制臺操作、Swarm集群和服務等集中管理和操作、登錄用戶管理和控制等功能。功能十分全面,基本能滿足中小型單位對容器管理的全部需求。
## 二、安裝使用
? 安裝使用見官方手冊:[https://www.portainer.io/installation/。](https://www.portainer.io/installation/%E3%80%82)
? 建議建議直接使用 docker 安裝,方便快捷。如果僅有一個docker宿主機,則可使用單機版運行,Portainer單機版運行十分簡單,只需要一條語句即可啟動容器,來管理該機器上的docker鏡像、容器等數據,使用如下指令,先拉取docker鏡像,再運行:
~~~shell
# 搜索鏡像
docker search portainer/portainer
# 拉取鏡像
docker pull portainer/portainer
# 運行鏡像
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name dev-portainer portainer/portainer
~~~
>[danger] \-d #容器在后臺運行
> \-p 9000:9000 # 宿主機9000端口映射容器中的9000端口
> \-v /var/run/docker.sock:/var/run/docker.sock # 把宿主機的Docker守護進程(docker daemon)默認監聽的Unix域套接字掛載到容器中
> \-v /root/portainer:/data # 把宿主機目錄 /root/portainer 掛載到容器 /data 目錄;
> –name dev-portainer # 指定運行容器的名稱
**注意:** 在啟動容器時必須掛載本地 /var/run/docker.socker與容器內的/var/run/docker.socker連接。
啟動完成,訪問 `<ip>:9000`,第一次訪問需要創建一個管理員用戶

admin/admin123
## 三、遠程鏈接
### 添加Endpoint
Endpoints -> Create endpoint -> Docker


## 四、docker添加TLS暴露2375
1、創建證書腳本
創建文件
```
cd /root/docker
touch tlscert.sh
```
腳本
```
#!/bin/bash
# @author: Bocloud
if [ $# != 1 ] ; then
echo "USAGE: $0 [HOST_IP]"
exit 1;
fi
#============================================#
# 下面為證書密鑰及相關信息配置,注意修改 #
#============================================#
PASSWORD="Beyond#11"
COUNTRY=CN
PROVINCE=jiangsu
CITY=suzhou
ORGANIZATION=Bocloud
GROUP=OEM
NAME=Bocloud
HOST=$1
SUBJ="/C=$COUNTRY/ST=$PROVINCE/L=$CITY/O=$ORGANIZATION/OU=$GROUP/CN=$HOST"
echo "your host is: $1"
# 1.生成根證書RSA私鑰,PASSWORD作為私鑰文件的密碼
openssl genrsa -passout pass:$PASSWORD -aes256 -out ca-key.pem 4096
# 2.用根證書RSA私鑰生成自簽名的根證書
openssl req -passin pass:$PASSWORD -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem -subj $SUBJ
#============================================#
# 用根證書簽發server端證書 #
#============================================#
# 3.生成服務端私鑰
openssl genrsa -out server-key.pem 4096
# 4.生成服務端證書請求文件
openssl req -new -sha256 -key server-key.pem -out server.csr -subj "/CN=$HOST"
# 5.使tls連接能通過ip地址方式,綁定IP
echo subjectAltName = IP:127.0.0.1,IP:$HOST > extfile.cnf
# 6.使用根證書簽發服務端證書
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
#============================================#
# 用根證書簽發client端證書 #
#============================================#
# 7.生成客戶端私鑰
openssl genrsa -out key.pem 4096
# 8.生成客戶端證書請求文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
# 9.客戶端證書配置文件
echo extendedKeyUsage = clientAuth > extfile.cnf
# 10.使用根證書簽發客戶端證書
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
#============================================#
# 清理 #
#============================================#
# 刪除中間文件
rm -f client.csr server.csr ca.srl extfile.cnf
# 轉移目錄
mkdir client server
cp {ca,cert,key}.pem client
cp {ca,server-cert,server-key}.pem server
rm {cert,key,server-cert,server-key}.pem
# 設置私鑰權限為只讀
chmod -f 0400 ca-key.pem server/server-key.pem client/key.pem
```
2、執行腳本生成TLS證書配置
~~~
bash ./tlscert.sh 192.168.2.219 IP是開放端口的IP地址
~~~

```
證書路徑如下:/root/docker
```

3、配置服務端dockercp證書到docker下。
~~~
cp server/* /etc/docker
~~~
修改/usr/lib/systemd/system/docker.service文件,在 `ExecStart=/usr/bin/dockerd -H fd://` 后添加上證書配置
```
ExecStart=/usr/bin/dockerd -H fd:// --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H=unix:///var/run/docker.sock -H=0.0.0.0:2375
```
重啟docker使配置生效。
~~~
systemctl daemon-reload
systemctl restart docker
~~~
#### 4、外部訪問的方式
1、客戶端加tls參數訪問
~~~
docker --tlsverify --tlscacert=client/ca.pem --tlscert=client/cert.pem --tlskey=client/key.pem -H tcp://192.168.2.219:2375 images
~~~
2、Docker API方式訪問
~~~
curl https://192.168.2.219:2375/images/json --cert client/cert.pem --key client/key.pem --cacert client/ca.pem
~~~
3、Portainer 遠程 TLS

五、添加Docker私服倉庫
左側下方Registries -> Add registry,輸入基本信息,如需認證訪問,開啟Authentication開關

- 項目介紹
- 項目聲明
- 項目簡介
- 架構設計
- 項目亮點功能介紹
- 技術棧介紹
- 核心功能
- 運行環境
- 項目更新日志
- 文檔更新日志
- F&Q
- 部署教程
- 環境準備
- JDK安裝
- JDK1.8,17共存
- maven
- 分布式緩存Redis
- 單機版
- 集群
- 注冊&配置中心alibaba/nacos
- 介紹
- Nacos安裝
- Nacos配置中心
- Nacos注冊發現
- Nacos生產部署方案
- 服務監控-BootAdmin
- 基本介紹
- 如何使用
- 整合Admin-Ui
- 客戶端配置
- 鏈路追蹤
- 基本介紹
- SkyWalking-1
- Skywalking-1
- 消息隊列
- Kafka
- docker安裝kafka
- Linux集群
- Maven私服
- nexus安裝部署
- nexus使用介紹
- 全文搜索elasticsearch
- windows集群搭建
- docker安裝es
- ElasticHD
- linux集群部署
- 統一日志解決方案
- 日志解決方案設計
- 介紹與相關資料
- ELK安裝部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服務監控-Prometheus
- Prometheus安裝配置
- Prometheus介紹
- grafana
- 持續集成部署CICD
- 自動化部署Jenkins
- 安裝部署win
- 打包發布遠程執行
- 安裝部署linux
- jenkins+gitlab+docker容器化工程自動化部署
- Git
- CICD說明
- 阿里云效
- CentOS_MYSQL安裝
- docker
- 安裝
- Docker安裝Nginx
- Docker部署啟動springboot
- dockerCompose
- harbor
- Docker私有鏡像倉庫
- Portainer
- Docker遠程連接設置
- 打包工程
- 必要啟動模塊
- 核心模塊
- 登錄認證
- 緩存功能
- 日志模塊
- 分布式鎖
- 消息隊列
- 異常處理
- 系統接口
- 參數驗證
- es檢索
- 數據導出
- 系統設計
- 系統總體架構
- 擴展模塊(可選)
- 限流熔斷alibaba/sentinel
- 使用Sentinel實現gateway網關及服務接口限流
- Sentinel使用Nacos存儲規則及同步
- 服務調用Feign
- Feign基本介紹
- 如何使用
- 負載均衡
- 請求超時
- 請求攔截器
- 分布式任務調度
- XXL-JOB
- 分布式事務
- TX-LCN
- Seata
- Seata原理解析
- 數據庫分庫分表
- swagger文檔
- 分布式ID生成器解決方案
- 服務網關CloudGateway
- 基本介紹
- 使用網關
- 路由配置
- 全局過濾器
- 服務認證授權架構設計
- 認證服務流程
- 授權服務流程
- 系統冪等性設計與實踐
- 分布式日志鏈路跟蹤
- 實時搜索系統設計
- 應用性能
- 壓力測試工具
- Apache JMeter介紹和安裝
- ApacheJMeter使用
- JVM
- JVM性能調優
- 常見JVM內存錯誤及解決方案
- JVM 分析工具詳解
- Spring Cloud性能調優
- Linux運維
- Linux 常用命令
- Linux開啟端口