docker

Posted shiji888

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于docker的主要内容,如果未能解决你的问题,请参考以下文章

markdown docker-compose片段

sh Docker片段

《Docker 源码分析》全球首发啦!

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

将 Docker 容器限制为单个 cpu 核心