使用 TLS 认证远程访问 Docker 【已翻译100%】

简介:

通常情况下Docker只在 UNIX socket下生效. 一般只有本地调用生效. 如果要远程调用可以有以下三种方式:

使用nginx转发通讯到Docker

用SSH和socat处理链路

创建Docker daemon监听开放的端口

第一种实现起来比较繁琐. 第二种需要在客户端服务端安装 socat. 由于其连接未加密,任何人都可以拦截Docker的通讯信息.

直到有了 Docker implemented TLS auth in 0.10才完美的解决了这个问题.

有三种简单的方式来实现:

I. 生成证书

需要生成三种证书类型:

  • CA 证书用来生成客户端和服务端证书
  • 远端Docker使用的客户端生疏
  • 服务端使用的Docker daemon证书

我用Ruby写了生成这三种证书的代码.你只需要拷贝相关的代码 clone this repository 并运行下面的命令:

$ gem install certificate_authority
$ ruby certgen.rb example.com
CA certificates are in ~/.docker/ca
Client certificates are in ~/.docker
Server certificates are in ~/.docker/example.com

证书都生成在~/.dockerpath下.

II. 拷贝服务端证书到远端

脚本生成 Docker daemon需要的键值和证书~/.docker/example.com(example.com 是你的域名).

在服务端拷贝到~/.dockerdirectory下:

rsync -ave ssh ~/.docker/example.com/ root@example.com:~/.docker/

III. 在远端配置Docker

Docker daemon在0.10后支持--tlsverify 来提供加密的远端连接

假设你是用的是 Ubuntu 12.04 LTS并已经安装了Docker .其它环境下可能有些不同.

只需要在/etc/default/docker加入下面配置:

DOCKER_OPTS="--tlsverify -H=unix:///var/run/docker.sock -H=0.0.0.0:4243 --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/cert.pem --tlskey=/root/.docker/key.pem"

之后重启 Docker daemon:

service docker restart

如果有错Docker daemon就会启动不了. 可以通过 under/var/log/upstart/docker.log来调试.

就是这么简单!

现在通过--tlsverify就能连接到远端Docker实例了:

docker --tlsverify -H tcp://example.com:4243 images

它会使用 ~/.docker下的证书来验证连接. 如果使用的是其他的类型, 可以通过--tls* 来查询docker --help的帮助文档 documentation.

官方的TLS创建网址在这里 can be found on Docker site.

相关文章
|
5月前
|
NoSQL 关系型数据库 Redis
Docker的通俗理解和通过宿主机端口访问Redis容器的实例
本文目标:引导初学者入门Docker,理解镜像、容器和宿主机概念,学习常用Docker命令,特别是如何创建并从Redis容器通过宿主机端口访问。 关键点: - Docker核心:镜像(类)、容器(实例)、宿主机(运行环境)。 - `docker pull` 拉取镜像,如 `redis:3.0`。 - `docker run -d --name` 后台运行容器,如 `my-redis`。 - `-p` 参数做端口映射,如 `6379:6379`。 - `docker exec -it` 交互式进入容器,如 `bash` 或执行命令。
262 4
|
1月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
273 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
1月前
|
定位技术 文件存储 网络架构
Docker部署PhotoPrism、Immich图片管理应用,无需公网IP远程访问教程
除了Synology、QNAP、TerraMaster等品牌的NAS设备内置图库功能,市面上还有多种备受欢迎的第三方应用,如PhotoPrism、Immich、LibrePhotos、Piwigo、Photoview等。这些应用不仅提供强大的图片管理能力,还可通过Docker轻松部署。借助贝锐花生壳服务,即使没有公网IP也能实现远程访问,突破地理限制,提升数据可访问性和安全性,让用户随时随地管理私人图库。
104 1
|
1月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
25 0
|
3月前
|
运维 安全 网络安全
"革新远程访问体验:Docker化部署webssh2,一键启动Web SSH客户端,让远程管理如虎添翼!"
【8月更文挑战第2天】Docker作为软件开发与运维的关键工具,以其轻量级、可移植及强隔离特性简化了应用部署。结合webssh2这一开源Web SSH客户端,可通过浏览器安全便捷地访问SSH服务器,无需额外软件。首先确保已安装Docker,接着拉取webssh2镜像并运行容器,映射端口以便外部访问。配置好SSH服务器后,通过浏览器访问指定URL即可开始SSH会话。此方案不仅提升了用户体验,还加强了访问控制与系统安全。
317 7
|
3月前
|
Kubernetes 应用服务中间件 Docker
在K8S中,Pod网络访问与Docker容器端口映射有何不同?
在K8S中,Pod网络访问与Docker容器端口映射有何不同?
|
3月前
|
NoSQL 关系型数据库 MySQL
无法访问Docker 里的 mysql, redis
无法访问Docker 里的 mysql, redis
25 0
|
4月前
|
监控 数据可视化 Linux
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
|
4月前
|
Ubuntu Linux 数据安全/隐私保护
Linux系统使用Docker部署Cloudreve云盘并实现远程访问
Linux系统使用Docker部署Cloudreve云盘并实现远程访问
67 0
|
5月前
|
应用服务中间件 网络安全 nginx
docker 搭建 最新版本的 gitlab,使用HTTPS访问,以及gitlab的基础使用讲解
docker 搭建 最新版本的 gitlab,使用HTTPS访问,以及gitlab的基础使用讲解