Docker基础25–5.6 配置docker远程服务

  • Post author:
  • Post category:其他



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


下。


scp



root@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


命令

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



版权声明:本文为weixin_43631940原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。