Docker远程TLS管理

简介: 首先介绍一个好用的Docker管理软件,Portainer,好用便捷,让你轻松无压力的管理Docker环境。我们不会只有一个Docker服务,一般都是多个Docker服务,这个时候需要中心化管理多个Docker服务,这在Potainer中即添加新的入口点。

首先介绍一个好用的Docker管理软件,Portainer,好用便捷,让你轻松无压力的管理Docker环境。

我们不会只有一个Docker服务,一般都是多个Docker服务,这个时候需要中心化管理多个Docker服务,这在Potainer中即添加新的入口点。默认情况下Docker是不开启远程访问的。需要进行一些配置,下面演示下如何配置Docker的远程访问,与安全的Docker访问。

演示

简单配置

  1. 直接开启远程访问,无安全措施。
dockerd -H 0.0.0.0    #监听所有tcp连接,默认端口是6375
  1. 在systemd下,则需要修改docker.service,修改Service部分的ExecStart。
ExecStart=/usr/bin/dockerd -H 0.0.0.0 
  1. 然后任何人都可以直接访问Docker的端口,很不安全。

安全的Docker访问

创建CA,Server和客户端key通过openssl. 自建CA,我们需要对openssl进行一些配置。

  1. 找到openssl.conf配置文件进行配置。
    在CentOS下,openssl.conf位于/etc/pki/tls/,在Mac下,通过brew安装的则位于/usr/local/etc/openssl/下。

  2. 编辑openssl.conf的CA部分


    img_9482803560dbb073d300b84fdb71bd7f.png
    openssl.conf CA部分

确保你配置的目录下,有你准备好的目录。

mkdir -p {certs,private,tls,crl,newcerts}
echo 00 > serial   #注意serial要有数字,不然会报错
touch index.txt
  1. 生成私钥,并自签证书
    参考配置文件的位置,配置文件中的private_keycertificate位置。
openssl genrsa -out private/cakey.pem -des 1024
openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
... 需要填写一些资料,国家,省份什么的。
  1. 颁发证书
    4.1 生成要颁发证书的密钥文件,这个可以在任何主机上操作,我们已经自签了CA。
openssl genrsa -out private/test.key 1024

4.2 生成证书请求

openssl req -new -key private/test.key -days 365 -out test.csr

4.3 颁发证书

openssl ca  -in test.csr -out certs/test.crt -days 365
... 填写国家省份什么的,注意配置文件里面有规定至少和CA证书的国家,省份等必须要要有几项一致的。
  1. 将CA证书,颁发的证书,私钥保存起来使用。比如在刚才的Docker配置中,加密的Docker访问方式。
/usr/bin/dockerd --tls --tlscacert=/home/data/cert/cacert.pem \ 
--tlscert=/home/data/cert/certs/test.crt  \
--tlskey=/home/data/cert/private/test.key \
-H 0.0.0.0:2376
  1. 测试Docker访问。
    注意:这里的00.pem就是刚才生成的test.crt
curl -k https://localhost:2376/images/json  \ 
--cert /home/data/cert/cacert.pem \
--key /home/data/cert/private/test.key \
--cert /home/data/cert/newcerts/00.pem  | jq
img_934c117c2c49d033a5c2f6ff0d424c61.png
Curl访问Docker
  1. 配置docker访问
mkdir -pv ~/.docker
#cp -v {ca,cert,key}.pem ~/.docker
cp /home/data/cert/cacert.pem  ~/.docer/ca.pem
cp /home/data/cert/private/test.key  ~/.docer/key.pem
cp /home/data/cert/newcerts/00.pem  ~/.docer/cert.pem
export DOCKER_HOST=tcp://$HOST:2376 DOCKER_TLS_VERIFY=1
  1. 在portcaniner中配置新的endpoint
    刚才的CA证书,服务器证书,服务器密钥都有了,可以直接使用


    img_f6ea347904b4b11e14fcb4024001ffa5.png
    portaniner配置
  2. 看结果


    img_6a276eb1f6cc679d1f490edba254903a.png
    image.png

总结

服务器的安全是一个很重要的技能,关于安全方面的还可以继续加强。这篇文章主要介绍了如何配置Docker来使用portainer远程管理Docker,然后介绍了安全的方式配置Docker与管理Docker。

附录

img_4dc0650d2f37adb79f596708476225ed.png
当时的命令记录
目录
相关文章
|
2月前
|
关系型数据库 测试技术 数据库
使用Docker搭建测试用例管理平台TestLink:简易指南
使用Docker搭建TestLink测试管理软件的步骤如下:首先,拉取`bitnami/mariadb`和`bitnami/testlink-archived`镜像。然后,启动MariaDB容器,创建数据库。接着,启动TestLink容器并连接到MariaDB。检查容器状态确保它们已启动。最后,访问`localhost:8099`以使用TestLink,默认用户名为`user`,密码为`bitnami`。这样,你就能在本地便捷地进行测试管理了。
115 2
|
2月前
|
Java Linux Maven
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
143 3
|
2月前
|
存储 Linux 数据安全/隐私保护
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
481 0
|
2月前
|
存储 安全 持续交付
【Docker 专栏】Docker 镜像的版本控制与管理
【5月更文挑战第9天】本文探讨了Docker镜像版本控制与管理的重要性,包括可重复性、回滚能力、协作开发和持续集成。常用方法有标签、构建参数和版本控制系统。管理策略涉及定期清理、分层管理和镜像仓库。语义化标签、环境变量和配置文件在版本控制中有应用。版本系统与Docker结合能跟踪历史和促进协作。注意点包括优化镜像大小、确保安全性和兼容性。案例分析和未来趋势展示了持续发展的镜像管理技术,为Docker应用的稳定与进步保驾护航。
【Docker 专栏】Docker 镜像的版本控制与管理
|
12天前
|
存储 缓存 安全
Docker 如何管理镜像?
【7月更文挑战第11天】
43 0
Docker 如何管理镜像?
|
13天前
|
监控 数据可视化 Linux
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
|
22天前
|
安全 关系型数据库 开发者
Docker Compose凭借其简单易用的特性,已经成为开发者在构建和管理多容器应用时不可或缺的工具。
Docker Compose是容器编排利器,简化多容器应用管理。通过YAML文件定义服务、网络和卷,一键启动应用环境。核心概念包括服务(组件集合)、网络(灵活通信)、卷(数据持久化)。实战中,编写docker-compose.yml,如设置Nginx和Postgres服务,用`docker-compose up -d`启动。高级特性涉及依赖、环境变量、健康检查和数据持久化。最佳实践涵盖环境隔离、CI/CD、资源管理和安全措施。案例分析展示如何构建微服务应用栈,实现一键部署。Docker Compose助力开发者高效驾驭复杂容器场景。
33 1
|
1月前
|
存储 持续交付 数据安全/隐私保护
实现镜像管理轻松搞定:Docker 仓库管理详解
实现镜像管理轻松搞定:Docker 仓库管理详解
332 1
|
27天前
|
应用服务中间件 nginx Docker
Docker安装与管理Nginx
Docker安装与管理Nginx
84 0
|
2月前
|
存储 数据管理 数据安全/隐私保护
【Docker专栏】Docker存储卷管理:数据持久化的关键
【5月更文挑战第7天】本文探讨了Docker容器中数据持久化的关键——存储卷,包括其独立于容器生命周期的特性、数据共享与迁移能力。Docker提供默认、命名、数据卷容器和挂载宿主机目录四种卷类型。创建与管理涉及`docker volume create`、`ls`、`run`等命令。最佳实践建议使用命名存储卷,定期备份,避免存储敏感数据,并清理未使用卷。了解和有效管理存储卷能提升容器灵活性和数据管理效率。
【Docker专栏】Docker存储卷管理:数据持久化的关键