乐趣区

关于docker:Ubuntu系统Docker环境安装远程服务开启以及Portainer访问

以下内容有可能须要迷信上网能力做到。

开始

我这里应用的环境是 阿里云 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)的入网拜访权限。官网文档地址

  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

退出移动版