docker集群(二)--portainer+TLS安全连接docker主机(详细介绍与使用心得)

http://blog.51cto.com/mysky0708/2298049
承接上文,在生产中如何安全的链接docker主机呢?我们采用TLS秘钥方式。
步骤:
第一部分:首先在docker主机上生成秘钥,保存到指定地方;
第二部分:在管理节点(portainer)上,指定上述秘钥,添加节点。

具体实施过程:
第一部分代码如下

read -s PASSWORD   //定义一个密码变量
read SERVER   //注意主机名变量要与系统对应
cd /etc/docker   //切换到生产密钥的目录
openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 2048
openssl genrsa -out server-key.pem 2048
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem //注意主机名要与为上面的SERVER变量一致
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem
openssl genrsa -out key.pem 2048
openssl req -subj ‘/CN=client‘ -new -key key.pem -out client.csr
sh -c ‘echo "extendedKeyUsage=clientAuth" > extfile.cnf‘
openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem -extfile extfile.cnf
chmod 0400 ca-key.pem key.pem server-key.pem   //更改密钥权限
chmod 0444 ca.pem server-cert.pem cert.pem   //更改密钥权限
rm client.csr server.csr   //删除无用文件
sz {ca.pem,cert.pem,key.pem}  //下载秘钥文件
/usr/bin/dockerd --tls \  //关闭docker,再运行此命令
--tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H 0.0.0.0:2376

原文参考:https://blog.csdn.net/bc_aptx4869/article/details/74984171

第二部分在管理节点添加docker主机

  • 在hosts文件中添加docker主机名(SERVER变量)与对应ip地址
  • 将{ca.pem,cert.pem,key.pem} 上传到指定位置
  • 测试是否联通
    docker --tlsverify --tlscacert=/root/76/ca.pem --tlscert=/root/76/cert.pem --tlskey=/root/76/key.pem -H docker-node01:2376 version
    Client:
    Version:         1.13.1
    API version:     1.26
    Package version: docker-1.13.1-74.git6e3bb8e.el7.centos.x86_64
    Go version:      go1.9.4
    Git commit:      6e3bb8e/1.13.1
    Built:           Tue Aug 21 15:23:37 2018
    OS/Arch:         linux/amd64
    
    Server:
    Version:         1.13.1
    API version:     1.26 (minimum version 1.12)
    Package version: docker-1.13.1-74.git6e3bb8e.el7.centos.x86_64
    Go version:      go1.9.4
    Git commit:      6e3bb8e/1.13.1
    Built:           Tue Aug 21 15:23:37 2018
    OS/Arch:         linux/amd64
    Experimental:    false
  • 添加至portainer

最后总结一下使用情况:

  • 优点:比较安全的管理docker主机
  • 缺点:
    • 使用TLS方式(启动docker)与正常启动,只能二选一,两者不能并存。也就意味着使用TLS无法在docker主机上运行docker命令;
    • 使用TLS方式,无法在portainer上启动之前(正常启动下)的容器,只能重新建立;
    • 使用TLS方式,无法使用dockerfile创建容器(至少我目前没找到方法。。)


欢迎大家多多给予修正与补充~~

原文地址:http://blog.51cto.com/mysky0708/2298725

时间: 2024-10-17 00:42:48

docker集群(二)--portainer+TLS安全连接docker主机(详细介绍与使用心得)的相关文章

docker 集群二(docker1.7)centos6.8 离线安装

一切都以客户为上帝,相信做实施的都遇到过,客户给的环境都是不让连接互联网的,是企业内网,那么离线安装docker就变的必要了. 1.首先说可以联网的安装docker yum install -y docker-engine service docker start 就是这么简单,你说要是让联网我们的效率能提高多少. 2.离线安装docker a.准备离线安装包 yum install --downloadonly --downloaddir=/root/docker http://dl.fedo

Docker集群管理portainer的使用

1.Slave主机docker需要开启2375端口 ubuntu: sudo vim /etc/default/docker DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375" Centos: sudo vim /etc/sysconfig/docker other_args='-Htcp://0.0.0.0:2375 -H unix:///var/run/docker.sock' #centos6下使用 OPTIO

k8s docker集群搭建

?Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是kubernetes 首先,他是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性

Docker集群下,如何用Flannel实现容器互联

当您将多台服务器节点组成一个Docker集群时,需要对集群网络进行设置,否则默认情况下,无法跨主机容器互联,接下来我们首先分析一下原因. 跨主机容器互联 下图描述了一个简单的集群网络,在该集群内,有两台服务器甲和乙,每台服务器上都有两张网卡,分别连接公网和私网,两台服务器可以通过私网互联,在两个服务器节点上分别安装了Docker,并且运行了A/B/C/D 4个容器. 每台服务器节点上都有一个 docker0 网桥,这是docker启动后初始化的虚拟设备,每个容器都与docker0网桥连接,并且,

Docker 集群环境实现方式

Docker 集群环境实现的新方式 近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技术更新的步伐,导致企业架构要随时更改以适合业务需求.当前,越来越多的公司都已将以 Docker 为代表的容器技术用于企业级业务平台,比如:腾讯,京东,美团,新浪,阿里巴巴等互联网公司.数据的安全.Docker 容器的稳定运行是众多用户关注的,这就要求我们提供一套行

Docker 集群环境实现的新方式

近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技术更新的步伐,导致企业架构要随时更改以适合业务需求.当前,越来越多的公司都已将以 Docker 为代表的容器技术用于企业级业务平台,比如:腾讯,京东,美团,新浪,阿里巴巴等互联网公司.数据的安全.Docker 容器的稳定运行是众多用户关注的,这就要求我们提供一套行之有效的管理大型容器集群的整体解决方

Docker集群(一) —— Docker网络及flannel介绍

[摘要]本文介绍docker网络原理和设置,以及在docker集群中需要解决的问题.最后介绍flannel在解决docker网络问题中的作用. 1   基础 在介绍docker的网络之前,必须先认识docker所依赖的几个linux技术,这对理解docker的网络有帮助.因水平有限这一节仅简单介绍,对linux网络原理感兴趣的TX可以继续深入研究. 1.1 网络命名空间: Linux Namespaces机制提供一种资源隔离方案.PID,IPC,Network等系统资源不再是全局性的,而是属于特

Swarm实现Docker集群的搭建和管理。

1.Swarm是一个由Docker开发的调度框架. (图网上找的) 2.负载均衡: Docker称之为入口负载均衡(ingress load balancing).它的工作方式是,所有worker节点都监听在发布的服务端口上.当该服务被外部系统调用时,收到流量的节点会通过Docker提供的内部DNS服务,将流量负载均衡不同的worker上. (图网上找的) 3.docker集群搭建. (1).时间同步:yum install –y ntpdatentpdate us.pool.ntp.org (

Docker集群(三) —— Kubernetes 简单入门

[摘要]Kubernetes是Google开源的Docker容器集群管理系统,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能.本文介绍了kubernetes的重要概念,并通过实例的示例解释了如何应用kubernetes管理docker集群. 因操作系统不同.应用场景不同kubernetes的使用方法有不同,本文只介绍其中一种笔者实践过的切实可行的方法,旨在使读者快速了解Kubernetes,对其有直观的感受.本文以单机版举例,下面的例子都在同一台物理结点上执行,多结点的情况