Linux(Centos)下 docker-ce安装配置(TLS认证)、docker-compose安装与配置
Docker中文社区 https://www.docker.org.cn/index.html
一、docker(支持TLS)及docker-compose安装与配置
1、安装依赖包及设置阿里云镜像
$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum clean all&&yum makecache #重建Yum缓存
2、安装 Docker-CE
$ vim /etc/sysctl.conf #开启数据转发,重启网络生效
net.ipv4.ip_forward=1
$ sysctl -p
$ yum install docker-ce -y #yum安装docker-ce
$ systemctl enable docker
$ mkdir -p /opt/docker/data/
$ useradd -d /opt/docker/data/ -g docker docker #创建docker用户及组并指定自定义目录/opt/docker/data/,-m有时候会失败,自己创建算了
$ chown -R docker.docker /opt/docker/data/
#启用TLS安全访问(服务端及客户端)
#在Docker守护程序的主机上,生成CA私钥和公钥
$ mkdir -p /root/.tls/
$ cd /root/.tls/
$ openssl genrsa -aes256 -out ca-key.pem 4096 #(输入自定义密码)
$ openssl req -new -x509 -days 3650 -subj "/C=CN/ST=ZJ/L=HZ/O=Careyes/OU=IT/CN=域名/emailAddress=793413226@qq.com" -key ca-key.pem -sha256 -out ca.pem #(输入相同密码)
#现在您已经有了CA,创建服务器密钥和证书签名请求(CSR)。确保“公用名”与您用于连接到Docker的主机名匹配
$ openssl genrsa -out server-key.pem 4096
$ openssl req -subj "/CN=域名" -sha256 -new -key server-key.pem -out server.csr
#用CA签署公钥
$ echo subjectAltName = DNS:域名,IP:内网IP地址,IP:127.0.0.1 >> extfile.cnf
$ echo extendedKeyUsage = serverAuth >> extfile.cnf
#生成签名证书
$ openssl x509 -req -days 3650 -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-client.cnf
$ openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
#删除多余文件(保留5个文件,其中服务端用:ca.pem server-cert.pem server-key.pem,客户端用:ca.pem cert.pem key.pem)
$ rm -rf ca-key.pem ca.srl client.csr extfile-client.cnf extfile.cnf server.csr
$ vim /usr/lib/systemd/system/docker.service #修改docker配置
ExecStart原配置后面新增 \
--graph=/opt/docker/data \
--tlsverify \
--tlscacert=/root/.tls/ca.pem \
--tlscert=/root/.tls/server-cert.pem \
--tlskey=/root/.tls/server-key.pem \
-H tcp://0.0.0.0:端口 \
-H unix:///var/run/docker.sock
#备注:graph为存储路径,unix:///var/run/docker.sock用来连接docker,字符串左边不能有空格
#docker daemon重启,但容器不重启 设置"live-restore": true
#镜像加速,创建文件/etc/docker,
#(备注:如果出现docker打包项目安装字体命令如【RUN apk add --update ttf-dejavu && rm -rf /var/cache/apk/*】失败的情况,换增加一个registry-mirrors如【https://30oijej2.mirror.aliyuncs.com】来自阿里云账号内部生成的docker仓库地址)
$ mkdir -p /etc/docker
$ tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],
"live-restore": true
}
EOF
#启动加载
$ systemctl daemon-reload && systemctl restart docker
#查看docker信息
$ docker info
$ docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=IP或者域名:端口 version #测试连接即可
备注:如果无法访问,基本是当前服务器防火墙拦截了,关闭防火墙举例(根据不同情况是关闭防火墙或是配置出入规则达到可访问的目的):systemctl stop firewalld
3、docker-compose 安装(最新版本1.29.2,更新时间20210729),下载时记得多试几次,才会下载正常
#地址:https://github.com/docker/compose/releases
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
为梦想不止不休!