以下内容有可能须要迷信上网能力做到。
开始
我这里应用的环境是 阿里云 ecs,零碎是 Ubuntu 20.04 64 位
docker 装置
如果零碎是第一次装置 docker,简略来说只须要执行两条命令
1.sudo apt-get update
2.sudo apt-get install docker-ce docker-ce-cli containerd.io
装置教程地址
docker 官网文档
在装置实现之后输出docker info
查看 docker 信息
在 Windows10 零碎中,能够下载 Docker Desktop on Windows
官网地址留神,在装置 docker 之前,须要先装置并开启 WSL(Windows 中的 Linux 子系统)
官网地址
Portainer 装置
Portainer 是一款开源容器管理工具
官网文档
官网地址
1.docker volume create portainer_data
2.docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
装置实现后能够在浏览器输出 http://localhost:9000
来拜访。在第一次进入时须要设定明码。
能够通过增加 Endpoints 来治理近程的 Docker 容器
点击菜单中的 Endpoints,抉择 Environment type 中的 Docker ,轻易输出一个当前你能认出来的 Name ,而后填入 Endpoint URL , 这个 URL 就是你要治理的近程服务器的地址或者域名。失常状况下,如果你的服务器没有开启 TLS 认证的话,就能够点击 Add endpoint 按钮了。
然而绝大多是状况下是必须要确保 docker 端口的平安的。否则将很容易就被攻打。
当开启 TLS 后,会有四个选项,咱们抉择第一个形式,须要上传三个证书。下一节咱们会讲到如何生成这三个证书。
docker 开启近程拜访
在开启 docker 近程拜访之前,请注意你所在的服务器提供商,如阿里云中的 ECS 中网络安全组是否开启相应端口(本例中的 2376 、2375)的入网拜访权限。官网文档地址
- 输出命令
sudo systemctl edit docker.service
来编辑docker.service
文件 -
增加或批改内容为(Ctrl+X,Y 保留批改)
1.[Service] 2.ExecStart= 3.ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
- 输出
sudo systemctl daemon-reload
,从新加载配置文件 - 输出
sudo systemctl restart docker.service
重启 docker 服务 - 输出
sudo netstat -lntp | grep dockerd
查看 docker 是否曾经在监听相应的端口。
当初,咱们曾经开启 docker 的近程拜访端口了。接下来要退出 TLS 平安拜访。会略微简单一点。官网文档地址
- 请将 $HOST 替换为docker 主机域名(2 处), 若须要增加 IP 地址拜访,请在第 5 条命令时批改或增加 IP 地址
-
顺次输出(有时候是须要输出 明码 和 公司 等相干信息,依照提醒输出即可)
1. openssl genrsa -aes256 -out ca-key.pem 4096 2. openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem 3. openssl genrsa -out server-key.pem 4096 4. openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr 5. echo subjectAltName = DNS:$HOST,IP:10.10.10.20,IP:127.0.0.1 >> extfile.cnf 6. echo extendedKeyUsage = serverAuth >> extfile.cnf 7. openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile 3. etfile.cnf 8. openssl genrsa -out key.pem 4096 9. openssl req -subj '/CN=client' -new -key key.pem -out client.csr 10. echo extendedKeyUsage = clientAuth > extfile-client.cnf 11. openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf 12. rm -v client.csr server.csr extfile.cnf extfile-client.cnf 13. chmod -v 0400 ca-key.pem key.pem server-key.pem 14. chmod -v 0444 ca.pem server-cert.pem cert.pem
-
以上实现之后,输出以下命令 启动 docker,并开启 TLS 监听端口 2376(长期测试)
dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=0.0.0.0:2376
若 docker 正在运行,须要先进行 docker
应用 lrzsz 软件将 证书 下载到本地sz ca.pem sz cert.pem sz key.pem
-
本地输出以下命令查看近程 docker 版本(先将工作目录切换至证书所在文件夹)
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=$HOST:2376 version
-
接下来咱们进行服务器上的 docker ,
sudo systemctl edit docker.service
批改docker.service
文件1.[Service] 2.ExecStart= 3.ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=/root/ca.pem --tlscert=/root/server-cert.pem --tlskey=/root/server-key.pem
- 输出
sudo systemctl daemon-reload
,从新加载配置文件 - 输出
sudo systemctl restart docker.service
重启 docker 服务 - 输出
sudo netstat -lntp | grep dockerd
查看 docker 是否曾经在监听相应的端口。
最初,咱们就能够将下载后的
ca.pem cert.pem key.pem
证书用来上传至 Portainer 中来增加近程 Endpoints