#### 1.環境准備
```bash
# 查看Docker服務器主機名
hostnamectl
```

這里記住我的主機名s130就好
```bash
# 靜態主機名修改
vi /etc/hostname
# 臨時主機名修改(重啟失效)
hostname s130
```
#### 2.創建TLS證書
創建create_crets.sh文件並執行,生成的證書在/certs/docker目錄下,
```bash
# create_crets.sh,將【證書生成腳本】內容復制進去
touch create_crets.sh
chmod 755 create_crets.sh
```
```bash
# 證書生成腳本
#!/bin/bash
set -e
if [ -z $1 ];then
echo "請輸入Docker服務器主機名"
exit 0
fi
HOST=$1
mkdir -p /certs/docker
cd /certs/docker
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
# 配置白名單,推薦配置0.0.0.0,允許所有IP連接但只有證書才可以連接成功
echo subjectAltName = DNS:$HOST,IP:0.0.0.0 > extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile 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 -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
rm -v client.csr server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
```
執行腳本生成證書,按照提示輸入
```bash
# 傳遞的參數s130為服務器的主機名,不能是IP
sh create_crets.sh s130
```

所有密碼輸入同一個就好,要注意輸入Docker服務器主機名s130
#### 3.配置Docker開啟TLS認證
```
vi /usr/lib/systemd/system/docker.service
```
```bash
# 在ExecStart屬性后追加
--tlsverify --tlscacert=/certs/docker/ca.pem --tlscert=/certs/docker/server-cert.pem --tlskey=/certs/docker/server-key.pem \
-H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock \
```

```bash
# 重新加載docker配置后重啟
systemctl daemon-reload
systemctl restart docker
```
```bash
# 查看2376端口是否啟動
netstat -tunlp
```

#### 3.Docker Remote API本機連接測試
```bash
# 沒有指定證書時,報錯含義是簽發證書機構未經認證,無法識別
curl https://s130:2376/info
```

```bash
# 指定證書訪問ok
curl https://s130:2376/info --cert /certs/docker/cert.pem --key /certs/docker/key.pem --cacert /certs/docker/ca.pem
```

#### 4.IDEA連接配置和測試
從Docker服務器生成的客戶端所需的3個密鑰下載到我們本地機器上去

配置本地機器的域名解析映射(推薦SwitchHosts工具)

打開IDEA配置Docker Remote API的URL和密鑰存放的路徑

maven配置修改

