当前位置:主页 > 查看内容

Ubuntu系统Docker环境安装、远程服务开启以及Portainer访问

发布时间:2021-04-25 00:00| 位朋友查看

简介:以下内容有可能需要科学上网才能做到。 开始 我这里使用的环境是 阿里云ecs ,系统是 Ubuntu 20.04 64 位 docker 安装 如果系统是第一次安装docker,简单来说只需要执行两条命令 1.sudo apt-get update2.sudo apt-get install docker-ce docker-ce-cli conta……

以下内容有可能需要科学上网才能做到。

开始

我这里使用的环境是阿里云ecs,系统是Ubuntu 20.04 64
image.png

docker 安装

如果系统是第一次安装docker,简单来说只需要执行两条命令

1.sudo apt-get update
2.sudo apt-get install docker-ce docker-ce-cli containerd.io

安装教程地址
docker 官网文档

在安装完成之后输入
docker info 查看docker信息
image.png

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 来访问。在第一次进入时需要设定密码。

image.png

可以通过添加 Endpoints 来管理远程的 Docker 容器

image.png

点击菜单中的 Endpoints,选择 Environment type 中的 Docker ,随便输入一个以后你能认出来的 Name ,然后填入 Endpoint URL ,这个 URL 就是你要管理的远程服务器的地址或者域名。正常情况下,如果你的服务器没有开启 TLS 认证的话,就可以点击 Add endpoint 按钮了。

但是绝大多是情况下是必须要确保 docker 端口的安全的。否则将很容易就被攻击。

当开启 TLS 后,会有四个选项,我们选择第一个方式,需要上传三个证书。下一节我们会讲到如何生成这三个证书。

image.png

docker 开启远程访问

在开启docker远程访问之前,请留意你所在的服务器提供商,如阿里云中的 ECS 中网络安全组是否开启相应端口(本例中的 2376 2375)的入网访问权限。官方文档地址

  1. 输入命令 sudo systemctl edit docker.service 来编辑 docker.service 文件
  2. 添加或修改内容为(Ctrl+X,Y 保存修改)

    1.[Service]
    2.ExecStart=
    3.ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
  3. 输入 sudo systemctl daemon-reload,重新加载配置文件
  4. 输入 sudo systemctl restart docker.service 重启 docker 服务
  5. 输入 sudo netstat -lntp | grep dockerd 检查 docker 是否已经在监听相应的端口。

现在,我们已经开启docker的远程访问端口了。接下来要加入TLS安全访问。会稍微复杂一点。官方文档地址

  1. 请将 $HOST 替换为docker 主机域名(2处), 若需要添加 IP 地址访问,请在第 5 条命令时修改或添加 IP 地址
  2. 依次输入(有时候是需要输入 密码公司等相关信息,按照提示输入即可)

     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
  3. 以上完成之后,输入以下命令 启动 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
  4. 本地输入以下命令查看远程docker 版本(先将工作目录切换至证书所在文件夹)

    docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem  -H=$HOST:2376 version
  5. 接下来我们停止服务器上的 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
  6. 输入 sudo systemctl daemon-reload,重新加载配置文件
  7. 输入 sudo systemctl restart docker.service 重启 docker 服务
  8. 输入 sudo netstat -lntp | grep dockerd 检查 docker 是否已经在监听相应的端口。
最后,我们就可以将下载后的 ca.pem cert.pem key.pem 证书用来上传至 Portainer 中来添加远程 Endpoints

image.png


本文转自网络,版权归原作者所有,原文链接:https://segmentfault.com/a/1190000039891438
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐