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端口

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐