修改Docker配置文件
修改docker的配置文件daemon.json,如果配置文件不存在则直接创建。
vim /etc/docker/daemon.json
文件内容如下,其中insecure-registries属性值“registry.luntek-inc.com”代表私有仓库的地址,你需要将registry.luntek-inc.com改成你自己的私有仓库地址,registry-mirrors配置的是国内的docker镜像仓库地址,让下载镜像速度更快
{
"insecure-registries": [
"registry.luntek-inc.com"
],
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
编辑完成后重新加载配置文件并且重启docker
systemctl daemon-reload
systemctl restart docker
注:如果报如下错误说明daemon.json文件格式错误,请仔细检查空格或者逗号
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
docker重启完成后使用docker info
指令查看docker配置的私有仓库地址是否生效
配置正确的DNS
这个根据自身情况确定,如果私有docker仓库的dns与本机电脑的dns一致则可以不配置,否则的话在执行docker pull
时会报如下错误
docker pull registry.luntek-inc.com:10443/prod/luntek-triplink-store:0.0.2
Error response from daemon: Get "https://registry.luntek-inc.com:10443/v2/": dial tcp: lookup registry.luntek-inc.com on 192.168.254.*****: no such host
如果出现如下错误,则需要先确认私有仓库的dns,然后在拉取镜像的电脑上配置DNS信息即可,查看私有仓库的DNS有三种方法
方法一
查看私有仓库电脑的dns配置文件
cat /etc/resolv.conf
方法二
查看私有仓库电脑的网卡文件
cd /etc/sysconfig/network-scripts/
ls
# 查看ifcfg-开头的网卡文件
cat ifcfg-enp4s0
方法三
查看局域网下相同电脑能连接的电脑
LZ最后是将自己windows的dns配置过去才可以,怀疑254.3可能是优先或者高层的dns,配置好dns后不再报错no such host
登录私有仓库docker账号
使用命令登录私有仓库docker账号
docker login -u admin -p YourPwd http://192.168.254.8:8080
http://192.168.254.8:8080为私有仓库地址
添加私有仓库地址
不添加的话在拉取镜像时会报如下错误
Error response from daemon: Get "https://****": x509: certificate signed by unknown authority
1、登陆私有仓库服务器,进入/etc/docker/certs.d/目录下,找到ca.crt证书
2、将该证书拷贝一份到目标主机(即使用docker pull主机)上,并放在/etc/docker/certs.d/下
3、重启docker服务
systemctl daemon-reload
systemctl restart docker
4、登陆该私有仓库docker login *******,输入用户名密码后,登陆成功便可以使用docker pull拉取镜像
登录成功后可以使用指令查看登录信息
cat /root/.docker/config.json
解决证书问题
正常到这里应该是可以直接拉镜像了如果不能的话可以参考一下
由于lz添加证书的方法不对所以导致一直无法正常docker pull
文件,并且一直报如下的错
Error response from daemon: Get "https://registry.luntek-inc.com:10443/v2/": x509: certificate signed by unknown authority
方法一:将docker仓库的证书放到本地服务器
切到服务器端(docker仓库机器)默认证书地址cd /etc/docker/certs.d/
,由于lz配置的时候放置在域名下,所以会有一些不同,根据自己情况而定。如果没有的话需要重新生成,然后将文件拷贝下来备用,此文件需要放到使用docker pull
的机器上
本地电脑(docker pull的机器)上进行的操作
- 安装ca-certificates
yum -y install ca-certificates
- 将ca.crt证书文件放入 /usr/share/pki/ca-trust-source/anchors
- 更新证书文件
update-ca-trust
如上命令执行完成后etc/ssl/certs/ca-bundle.crt 以及/etc/ssl/certs/ca-bundle.trust.crt就包含了新的自定义证书,可以使用指令查看tail -n20 /etc/ssl/certs/ca-bundle.crt
重启docker,再次从本地私有仓库拉镜像就可以成功
systemctl restart docker
docker pull registry.luntek-inc.com:10443/prod/luntek-triplink-store:0.0.2
镜像拉取成功
方法二:系统时间不同步
先使用date
命令查看系统当前时间,如果明显有问题,就要用到另外一个工具:ntpdate,如果没有此命令,安装即可
ubuntu
apt install -y ntpdate
centos:
yum install -y ntpdate
更新同步时间
ntpdate cn.pool.ntp.org
再次使用date
命令查看当前系统时间,确认没问题再拉取镜像
方法三:daemon.json文件配置有问题
证书的问题需要编辑 daemo.json 文件:vi /etc/docker/daemon.json
参考格式如下:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":[
"172.xx.xxx.xxx:4433",
"reg-cloud.xxxxx.com"
]
}
重启docker
systemctl daemon-reload
systemctl restart docker
到这里基本上就能解决大部分的证书问题
余生还长、切勿惆怅