Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker swarm ca 常用命令。

1、docker swarm ca 简介

Docker Swarm 是 Docker 提供的用于创建和管理容器集群的工具。它允许您将多个 Docker 主机组成一个集群,并使用 Swarm 模式部署和管理容器应用程序。

docker swarm ca 命令用于生成和管理 Swarm 集群的根证书和私钥。它的主要作用是生成证书以用于加密和认证 Swarm 集群中的通信。

注意:

该命令为集群管理命令,必须在集群管理节点上执行。要了解管理器和工人,请参阅文档中的Swarm模式部分。

该命令的示例用法请参阅下面的示例部分。

参考文档:https://docs.docker.com/engine/reference/commandline/swarm_ca/

2、docker swarm ca 语法

docker swarm ca [OPTIONS]

3、docker swarm ca 命令

运行 docker swarm ca 命令而不带任何选项,以查看当前以 PEM 格式显示的根 CA 证书。

docker swarm ca

-----BEGIN CERTIFICATE-----
MIIBazCCARCgAwIBAgIUJPzo67QC7g8Ebg2ansjkZ8CbmaswCgYIKoZIzj0EAwIw
EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwNTAzMTcxMDAwWhcNMzcwNDI4MTcx
MDAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABKL6/C0sihYEb935wVPRA8MqzPLn3jzou0OJRXHsCLcVExigrMdgmLCC+Va4
+sJ+SLVO1eQbvLHH8uuDdF/QOU6jQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBSfUy5bjUnBAx/B0GkOBKp91XvxzjAKBggqhkjO
PQQDAgNJADBGAiEAnbvh0puOS5R/qvy1PMHY1iksYKh2acsGLtL/jAIvO4ACIQCi
lIwQqLkJ48SQqCjG1DBTSBsHmMSRT+6mE2My+Z3GKA==
-----END CERTIFICATE-----

使用 --rotate 标志(可选使用 --ca-cert,以及 --ca-key 或 --external-ca 参数标志)来rotation当前的 Swarm 根 CA。

docker swarm ca --rotate
desired root digest: sha256:05da740cf2577a25224c53019e2cce99bcc5ba09664ad6bb2a9425d9ebd1b53e
  rotated TLS certificates:  [=========================>                         ] 1/2 nodes
  rotated CA certificates:   [>                                                  ] 0/2 nodes

一旦rotation完成(所有进度条都已完成),当前的 CA 证书将被打印出来。

docker swarm ca --rotate
desired root digest: sha256:05da740cf2577a25224c53019e2cce99bcc5ba09664ad6bb2a9425d9ebd1b53e
  rotated TLS certificates:  [==================================================>] 2/2 nodes
  rotated CA certificates:   [==================================================>] 2/2 nodes
-----BEGIN CERTIFICATE-----
MIIBazCCARCgAwIBAgIUFynG04h5Rrl4lKyA4/E65tYKg8IwCgYIKoZIzj0EAwIw
EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwNTE2MDAxMDAwWhcNMzcwNTExMDAx
MDAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABC2DuNrIETP7C7lfiEPk39tWaaU0I2RumUP4fX4+3m+87j0DU0CsemUaaOG6
+PxHhGu2VXQ4c9pctPHgf7vWeVajQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBSEL02z6mCI3SmMDmITMr12qCRY2jAKBggqhkjO
PQQDAgNJADBGAiEA263Eb52+825EeNQZM0AME+aoH1319Zp9/J5ijILW+6ACIQCg
gyg5u9Iliel99l7SuMhNeLkrU7fXs+Of1nTyyM73ig==
-----END CERTIFICATE-----

1)根 CA rotation(--rotate)

注意:

Mirantis Kubernetes Engine(MKE),之前称为 Docker UCP,在 Swarm 上提供了一个外部证书管理服务。如果您在 MKE 上运行 Swarm,则不应手动rotation CA 证书。如果需要rotation证书,请联系 Mirantis 支持。

当一个或多个 Swarm 管理节点遭到破坏时,推荐执行根 CA rotation,以便这些管理节点无法再连接或被集群中的其他节点信任。

另外,可以使用根 CA rotation将 Swarm CA 的控制权交给外部 CA,或者从外部 CA 中重新获得控制权。

--rotate 标志不需要任何参数来执行rotation,但您可以选择指定证书和密钥,或者指定证书和外部 CA URL,这些将被用于替代自动生成的证书/密钥对。

由于根 CA 密钥应保密,如果提供了密钥,通过 CLI 或 API 查看 Swarm 信息时将不可见。

直到所有注册节点都rotation其 TLS 证书,根 CA rotation才会完成。如果rotation在合理的时间内没有完成,请尝试运行 docker node ls --format '{{.ID}} {{.Hostname}} {{.Status}} {{.TLSStatus}}' 查看是否有节点关闭或无法rotation TLS 证书。

2)以分离模式(--detach)运行根 CA rotation

启动根 CA rotation,但不等待rotation完成或显示rotation进度。

4、命令选项

选项,简写

默认值

描述

--ca-cert

用于新集群的 PEM 格式根 CA 证书的路径

--ca-key

用于新集群的 PEM 格式根 CA 密钥的路径

--cert-expiry

2160h0m0s

节点证书的有效期(ns纳秒

--detach, -d

立即退出而不等待根 CA 轮换完成

--external-ca

一个或多个证书签名端点的规格说明

--quiet, -q

禁止输出进度信息

--rotate

rotation Swarm CA(如果未提供证书或密钥,则生成新的)

5、子命令

命令

描述

docker swarm ca

显示和轮换根CA

docker swarm init

初始化一个swarm

docker swarm join

作为节点和/或管理者加入一个swarm

docker swarm join-token

管理加入令牌

docker swarm leave

离开swarm

docker swarm unlock

解锁swarm

docker swarm unlock-key

管理解锁密钥

docker swarm update

更新swarm

推荐文档

相关文档

大家感兴趣的内容

随机列表