docker系列(1):docker安装连接
环境说明:
设置yum源:
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
修改启动文件:
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://192.168.1.101:2375
(设置本地的Docker daemon启动参数,使其开启socket端口)
systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker.service
测试链接:
docker -H 192.168.1.100 info
启用 TLS 安全连接:
参考: https://www.jianshu.com/p/7ba1a93e6de4
使用 Linux 下的 openssl
生成密钥
├── ca-key.pem # 妥善保管,连接时用不到 ├── ca.pem # clent & server ├── ca.srl # 用不到 ├── cert.pem # client ├── client.csr # 请求文件 ├── extfile.cnf # 配置文件 ├── key.pem # client ├── server-cert.pem # server ├── server.csr # 请求文件 └── server-key.pem # server
# 生成 CA 私钥 $ openssl genrsa -aes256 -out ca-key.pem 4096 # 需要输入两次密码(自定义) # 生成 CA 公钥 $ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem # 输入上一步中设置的密码,然后需要填写一些信息 # 下面是服务器证书生成 # 生成服务器私钥 $ openssl genrsa -out server-key.pem 4096 # 用私钥生成证书请求文件 $ openssl req -subj "/CN=localhost" -sha256 -new -key server-key.pem -out server.csr $ echo subjectAltName = IP:192.168.199.100,IP:192.168.57.110,IP:127.0.0.1 >> extfile.cnf # 允许服务端哪些 IP 或 host 能被客户端连接。 $ echo extendedKeyUsage = serverAuth >> extfile.cnf # 用 CA 来签署证书 $ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf # 输入第一步设置的密码 # 下面是客户端证书文件生成 # 生成客户端私钥 $ openssl genrsa -out key.pem 4096 # 用私钥生成证书请求文件 $ openssl req -subj '/CN=client' -new -key key.pem -out client.csr $ echo extendedKeyUsage = clientAuth >> extfile.cnf # 用 CA 来签署证书 $ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \ -CAcreateserial -out cert.pem -extfile extfile.cnf # 再次输入第一步设置的密码 # 删除文件,更改文件权限 $ rm -v client.csr server.csr $ chmod -v 0400 ca-key.pem key.pem server-key.pem $ chmod -v 0444 ca.pem server-cert.pem cert.pem
把 server-cert.pem
server-key.pem
三个文件移动到服务端 /etc/docker/
文件夹中。
配置daemon.json:
vim /etc/docker/daemon.json { "tls": true, "tlsverify": true, "tlscert": "/etc/docker/server-cert.pem", "tlskey": "/etc/docker/server-key.pem", "tlscacert": "/etc/docker/ca.pem", "hosts": ["unix:///var/run/docker.sock","tcp://192.168.1.100:2376"], "registry-mirrors": ["https://registry.docker-cn.com"] }
备注:daemon.json中加入启动参数后需修改启动文件,否则启动参数冲突无法启动
systemctl daemon-reload
systemctl restart docker
客户端链接:
常规链接已无法链接:
docker --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/cert.pem --tlskey=/etc/docker/key.pem -H tcp://192.168.1.100:2376 info
简化客户端链接:
cp client/* ~/.docker
追加环境变量
echo -e "export DOCKER_HOST=tcp://192.168.57.110:2376 DOCKER_TLS_VERIFY=1" >>~/.bashrc
docker info