在上一篇文章里我们主要介绍制作ssl证书,这里我们主要介绍安装docker。这里我们采用yum的方式安装docker,安装完成之后开启tcp通讯并且开启双向ssl验证。默认docker client和docker server是通过unix sock通讯的(在同一台机器),在实际环境中要根据自己需要来决定是否开启tcp通讯。当开启tcp通讯之后也要根据自己实际需要来看是否要开启ssl,是开启单向ssl还是双向ssl。
安装yum-utils
yum list|grep yum-util
yum install yum-utils
添加docker yum repo
yum install device-mapper-persistent-data lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
查看docker yum repo
ll /etc/yum.repo.d
搜索并安装docker
yum list|grep docker-ce
yum install docker-ce.x86_64
检查docker rmp包
rpm -qa|grep docker
启动docker并检查服务状态
systemctl start docker
systemctl status docker
设置docker自动启动
systemctl enable docker
测试docker命令
docker --version
修改docker server配置文件:
这里我们在配置文件里加入docker image repo镜像配置,可以使docker访问repo是有加速效果,在国内可以自己申请阿里云的镜像加速地址。另一个配置是开启docker的tcp访问,在这里我们监听2375端口
touch /etc/docker/daemon.json
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://8qw8c5j0.mirror.aliyuncs.com",
"https://registry.cn-hangzhou.aliyuncs.com"
],
"hosts":[
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
]
}
EOF
修改docker systemd unit文件:
用yum方式安装docker本质上也是创建了一个linux systemd系统服务,那么就会有对应的systemd unit文件。当我们修改完上一个步骤的配置之后用
systemctl restart docker和systemctl status docker来重启动docker之后会报错,就是因为在docker的systemd的unit文件里配置了用unix sock方式,所以这里我们要去掉这个配置,让docker 从/etc/docker/daemon.json读取配置,然后在从新load systemd(systemctl daemon-reload),并且restart docker服务。
systemctl restart docker
systemctl status docker
vi /usr/lib/systemd/system/docker.service
cat /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker
systemctl status docker
检查docker tcp端口监听
netstat -anoltp|grep docker
打开docker端口2375访问防火墙
firewall-cmd --permanent --zone=public --add-port=2375/tcp
firewall-cmd --reload
firewall-cmd --list-all
配置docker服务端开启ssl,添加client auth双向ssl:
这里需要用到docker server端的ssl证书,请提前制作好,可以参考上一篇文章。
cp /opt/sw/cert/ca.crt /etc/docker/
cp /opt/sw/cert/docker-server.crt /etc/docker/
cp /opt/sw/docker-server.key /etc/docker/
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://8qw8c5j0.mirror.aliyuncs.com",
"https://registry.cn-hangzhou.aliyuncs.com"
],
"hosts":[
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
],
"tls": true,
"tlscacert": "/etc/docker/ca.crt",
"tlscert": "/etc/docker/docker-server.crt",
"tlskey": "/etc/docker/docker-server.key",
"tlsverify": true
}
EOF
配置docker client端:
这里我们docker server端用vm 172.20.11.43,client端用172.20.11.41。配置docker client的ssl cert,ssl key,ca cert在默认的位置(~/.docker),请提前制作好client证书,可以参考上一篇文章。当然在默认位置配置了之后,在命令里就可以省略这些参数了,如果不在默认位置配置,就必须在命令里加上相应参数才可以完成双向ssl访问docker。
mkdir -p /root/.docker
cp /etc/docker/ca.crt /root/.docker/ca.pem
cp /opt/sw/cert/docker-client.crt /root/.docker/cert.pem
cp /opt/sw/cert/docker-client.key /root/.docker/key.pem
ll /root/.docker/
双向tls访问docker server
docker -H 172.20.11.43:2375 --tls --tlsverify ps
搜索并pull docker images
docker search nginx
docker search busybox
docker pull nginx:latest
docker pull busybox:latest
docker images
启动docker container
docker run -itd -p 8080:80 --restart always nginx:latest
docker run -itd --restart always busybox:latest
docker ps -a
在docker container里执行命令
docker exec -it 125669393e5a /bin/sh
ip addr
目前先写到这里,在下一篇文章里我们开始介绍安装etcd集群。