赞
踩
我们使用docker命令进行操作的时候,默认情况下是操作本地的docker服务,也可以通过配置,让docker监听一个tcp端口,以便让其它主机通过网络来进行操作。
在/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命令来管理此主机了。
已经可以管理了。
提示:这种配置法是极其危险的,因为远程管理不需要任何的身份验证,所以只用作实验环境,生产环境绝对不可使用。
上一小节中,我们演示了,通过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 命令
执行成功,说明配置成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。