docker开启远程连接

本文详细介绍了如何在Docker中开启远程连接,包括非加密的2375端口连接和更安全的2376端口TLS加密连接。通过生成安全证书、修改Docker配置和服务重启等步骤,实现安全远程管理Docker容器。

docker开启远程连接

1.安装docker

docker安装

2.非加密远程连接

开放2375端口,进行远程连接。
打开配置文件

vi /usr/lib/systemd/system/docker.service

进行如下修改
添加如下内容

-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

在这里插入图片描述
重启

systemctl daemon-reload
systemctl restart docker

然后使用netstat -nultp可以看到2375端口开放
使用curl http://localhost:2375/version查看时候连接成功,如成功,则如下图所示:
在这里插入图片描述

3.加密远程连接

开放2376端口,进行远程连接。

3.1生成安全证书

在docker所在主机中执行如下脚本生成证书:
(此脚本主要来源于参考地址4,实测可以运行)

#!/bin/bash

#相关配置信息
SERVER="输入你的服务器外网IP"
PASSWORD="输入你的密码"
COUNTRY="CN"
STATE="输入你的省份"
CITY="输入你的城市"
ORGANIZATION="输入你的组织"
ORGANIZATIONAL_UNIT="Dev"
EMAIL="输入你的邮箱"

###开始生成文件###
echo "开始生成文件"

#切换到生产密钥的目录
if [ ! -d "/opt/docker_ca" ]; then
mkdir -p /opt/docker_ca
fi
cd /opt/docker_ca
#生成ca私钥(使用aes256加密)
openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 4096
#生成ca证书,填写配置信息
openssl req -new -x509 -passin "pass:$PASSWORD" -days 365 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"

#生成server证书私钥文件
openssl genrsa -out server-key.pem 4096
#生成server证书请求文件
openssl req -subj "/CN=$SERVER" -sha256 -new -key server-key.pem -out server.csr
#配置白名单,多个用逗号隔开
sh -c 'echo subjectAltName = IP:'$SERVER',IP:0.0.0.0 >> extfile.cnf'
#把 extendedKeyUsage = serverAuth 键值设置到extfile.cnf文件里,限制扩展只能用在服务器认证
sh -c 'echo extendedKeyUsage = serverAuth >> extfile.cnf'
#使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -\CAcreateserial -out server-cert.pem -extfile extfile.cnf

#生成client证书RSA私钥文件
openssl genrsa -out key.pem 4096
#生成client证书请求文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#继续设置证书扩展属性
sh -c 'echo extendedKeyUsage = clientAuth >> extfile.cnf'
#生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)
openssl x509 -req -days 365 -sha256 -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

echo "生成文件完成"
###生成结束###

3.2 修改Docker配置

# 打开docker配置文件
vim /lib/systemd/system/docker.service
# 在ExecStart的/usr/bin/dockerd后面加\,然后添加如下的配置信息
ExecStart=/usr/bin/dockerd \
        --tlsverify \
        --tlscacert=/opt/docker_ca/ca.pem \
        --tlscert=/opt/docker_ca/server-cert.pem \
        --tlskey=/opt/docker_ca/server-key.pem \
        -H tcp://0.0.0.0:2376 \
        -H unix:///var/run/docker.sock \
        -H fd:// --containerd=/run/containerd/containerd.sock
# 重新启动docker
systemctl daemon-reload && systemctl restart docker

3.3 客户端配置登录信息

/opt/docker-ca目录下的ca.pem,cert.pem,key.pem拷贝到自己的电脑中,然后在配置连接的时候,设置安全证书即可。

与2375不同的是,此处连接需要加https,如:https://192.168.1.1:2376

参考地址

1.官方提供的远程连接方式
2.Centos7中docker开启远程访问方法
3.Docker开放远程安全访问(开启2376端口和CA认证)
4.Docker开启2376端口

### 远程连接Docker Desktop至Linux服务器 为了实现从Docker Desktop远程连接到Linux服务器,通常涉及配置SSH访问权限以及设置Docker守护程序以接受来自特定客户端的请求。 #### 配置SSH访问 确保本地机器能够通过SSH安全登录目标Linux服务器。这一步骤对于后续操作至关重要[^1]。具体来说,在本地计算机上执行如下命令来测试并建立与远端主机的安全连接: ```bash ssh username@linux_server_ip_address ``` 这里`username`代表拥有适当权限用于管理容器服务的有效用户名;而`linux_server_ip_address`则是指代运行着所需交互之Docker环境的目标设备公网IP地址或域名。 #### 设置Docker守护进程监听外部连接 默认情况下,Docker仅允许来自localhost(即同一台物理机上的应用程序和服务)发起API调用。为了让其他位置的应用也能顺利沟通,则需调整其配置文件使它对外界开放接口。编辑位于 `/etc/docker/daemon.json` 的JSON格式配置文档,加入下列字段指定TCP端口供外界访问: ```json { "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] } ``` 上述改动使得Docker不仅继续响应Unix socket形式的传统内部通信方式,同时也开启了面向互联网暴露于2375号端口处的服务入口。值得注意的是,这种做法可能带来安全隐患,因此建议采取额外措施保障安全性,比如利用防火墙规则限定可接入源地址范围或是启用TLS加密传输机制保护数据交换过程中的隐私性[^2]。 完成以上修改之后重启Docker服务生效更改: ```bash sudo systemctl restart docker ``` #### 使用Docker CLI验证连通状况 最后回到最初提到过的Windows/MacOS平台下的图形界面工具——Docker Desktop之前,先借助命令行工具确认一切正常运作无误。打开终端窗口输入下面指令尝试获取远程节点版本信息作为初步检验手段之一: ```bash docker -H tcp://<your-linux-server-ip>:2375 version ``` 如果返回了关于对方系统的描述说明已经成功建立了稳定可靠的链路关系。此时再考虑进一步集成GUI组件也不迟。 #### 整合Docker Desktop进行可视化控制 当所有前期准备工作都顺利完成以后,就可以着手准备让Docker Desktop参与到整个流程当中来了。虽然官方并不直接支持跨操作系统边界直接桥接两套不同体系结构之间的差异,但是可以通过安装适用于各自平台特性的代理插件间接达成目的。例如,在Mac OS X环境下推荐采用HyperKit驱动方案构建轻量级虚拟化层承载Guest OS实例;而在基于Microsoft Windows 10 Pro及以上版本的操作系统里则更倾向于Hyper-V技术路线实施相同功能特性集。 不过最简便的方式还是直接在Docker Desktop中配置远程Docker引擎。进入Preferences -> Docker Engine ,然后添加远程Docker引擎URL,通常是 `tcp://<your-linux-server-ip>:2375` 。保存设置后,即可在Docker Desktop中查看和管理远程Linux服务器上的容器资源。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值