以下内容有可能需要科学上网才能做到。
我这里使用的环境是阿里云ecs,系统是Ubuntu 20.04 64位
如果系统是第一次安装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子系统)
官方地址
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远程访问之前,请留意你所在的服务器提供商,如阿里云中的 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安全访问。会稍微复杂一点。官方文档地址
依次输入(有时候是需要输入 密码 和公司等相关信息,按照提示输入即可)
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
在经典配色中,可能每个人都不会否认黑白灰的永恒魅力。虽然人们总是想outstandi...
接口和类型别名非常相似,在大多情况下二者可以互换。在写TS的时候,想必大家都...
png透明 AlphaImageLoader filter:progid:DXImageTransform.Microsoft.AlphaImag...
1.什么是母校?就是那个你一天骂他八遍却不许别人骂的地方。 2.拍毕业照三秒的...
如上图,padding值是复合属性按照顺时针(上右下做)顺序,其中padding的内边距影响...
简介 Amaze UI 是一个针对 HTML 5 开发的轻量级、模块化、移动优先的跨屏前端框...
先来看一下效果,这在CSS3之前,完全是不可想象的,只有图片才能做的到,但在HTM...
recorder.js microphone基于HTML5的录音功能,输出格式为mp3文件。 前言 完全依...
前言 当页面的html结构嵌套的盒子很多的时候,可能会导致一个页面中含有多个垂直...
一、少用偏门。 类似break-word断行,z-index手动分层,还有像垂直对齐等等这些...