当前位置:   article > 正文

Docker基础25--5.6 配置docker远程服务_本地docker链接远程docker server

本地docker链接远程docker server

5.6 配置docker远程服务

我们使用docker命令进行操作的时候,默认情况下是操作本地的docker服务,也可以通过配置,让docker监听一个tcp端口,以便让其它主机通过网络来进行操作。

5.6.1 通过tcp:2375端口实现docker远程服务

在/etc/default/docker这个文件中,加入一个参数DOCKER_OPTS1=”-H tcp://0.0.0.0:2375”

 

修改docker.service

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

 

增加红框内的参数。

在防火墙中放通2375端口

firewall-cmd --add-port=2375/tcp

firewall-cmd --add-port=2375/tcp --permanent

重载daemon参数,并重启docker服务

systemctl daemon-reload

systemctl restart docker

查看docker状态

systemctl status docker

 

红框内的这个参数,就是我们刚刚配置的参数。

查看监听端口

系统会监听2375端口

netstat –tupn

 

在时候在另一台主机上,就可以使用docker命令来管理此主机了。

 

已经可以管理了。

提示:这种配置法是极其危险的,因为远程管理不需要任何的身份验证,所以只用作实验环境,生产环境绝对不可使用。

5.6.2 通过TCP:2376端口+TLS方式实现docker远程服务

上一小节中,我们演示了,通过2375端口实现docker远程服务,但是这种方式风险较大,不建议使用。

这一小节中,我们介绍TCP:2376+TLS方式来实验安全地docker远程服务。

实验环境:

Server端:192.168.0.197

Client端:192.168.0.198

step 1 修改/etc/default/docker文件

vim /etc/default/docker

在文件里输入以下内容:

DOCKER_OPTS="-H 0.0.0.0:2376 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem  --tlskey=/etc/docker/server-key.pem"

Step 2 修改/usr/lib/systemd/system/docker.service

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

 

增加红框中的内容:

第一个红框是指定环境变量文件为/etc/default/docker(就是我们在上一步中修改的文件)

第二个红框是引用上一步中定义的那个OPTS

Step 3重载服务配置,并重新启动docker服务

systemctl daemon-reload

systemctl restart docker

step 4查看docker服务状态和监听端口

systemctl status docker

 

红框内就是我们在第一步那个文件中定义的内容

netstat–tupln

 

这边我们发现端口2376已经起来了

Step 5 放通防火墙

firewall-cmd --add-port=2376/tcp –permanent

firewall-cmd --add-port=2376/tcp

step 6生成TLS 相关证书和密钥:

此时虽然2376端口已经起来,但我们在client端,是无法访问docker的.

 

我们先要生存TLS的相关证书和密钥:

进入/etc/docker目录

cd /etc/docker

openssl genrsa -aes256 -out ca-key.pem 4096    #创建CA私钥

 

第一个红框内需要我们输入一个密码.

这个命令执行完以后会生成一个ca-key.pem文件,就是CA私钥

openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem   #用CA私钥创建一个CA证书

 

第一个红框处需要输入CA的密码(就是我们上一步中输入的那个密码)

这里会生成一个ca.pem文件 ,就是CA证书.

openssl genrsa -out server-key.pem 4096   #生成server证书私钥

 

openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr  #用server证书私钥生成一个证书请求.

 

openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem #用CA密钥、CA证书、server证书请求生成server自签证书

 

第一个红框处需要输入CA密钥的密码。

openssl genrsa -out key.pem 4096   #生成client端证书私钥

 

openssl req -subj "/CN=client" -new -key key.pem -out client.csr  #生成client端证书请求

 

echo extendedKeyUsage=clientAuth > extfile.cnf #创建配置文件,告知服务端,服务器要开TLS验证,为了产生客户端自签证书'

openssl x509 -req -days 1000-sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf #生成客户端自签证书

 

第一个红框处需要输入CA密钥的密码。

这些命令执行完以后,会在/etc/docker这个目录下生成几个CA文件

 

cert.pem:client自签证书

key.pem:client证书私钥

server-cert.pem:server自签证书

server-key.pem:server证书私钥

ca.pem:CA证书

ca-key.pem:CA私钥

以下是各个CA文件的依赖关系:

 

Step 7重载服务配置,并重新启动docker服务

systemctl daemon-reload

systemctl restart docker

Step8:配置client

在client端主机的/root下面创建一个名为“.docker”的目录

mkdir /root/.docker   #注意:目录名的第一个字段是一个” .”

将server端刚刚生成的的,ca.pem,cert.pem,key.pem这三个文件,拷贝到client端的/root/.docker下。

scproot@192.168.0.197:/etc/docker/xxxx  /root/.docker

 

Step 9 在client端测试连接

docker -H 192.168.0.197:2376 --tls ps –a #执行192.168.0.197这个主机上的docker ps –a 命令

 

执行成功,说明配置成功。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号