Docker配置从私有仓库拉取镜像方式

 更新时间:2025年03月08日 08:42:51   作者:一米阳光zw  
本文详细介绍了如何修改Docker配置文件以使用私有仓库,并解决相关问题,包括配置文件的编辑、DNS设置、证书管理以及系统时间同步

修改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

到这里基本上就能解决大部分的证书问题

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker更换MySQL镜像并确保数据完整性的详细流程

    Docker更换MySQL镜像并确保数据完整性的详细流程

    这篇文章主要介绍了在更换MySQL镜像之前备份数据的重要性,并详细描述了使用mysqldump备份和恢复MySQL数据的步骤,同时,文章还解释了如何停止并删除旧的MySQL容器,需要的朋友可以参考下
    2025-05-05
  • Docker访问宿主机IP的5种方法及最佳实践

    Docker访问宿主机IP的5种方法及最佳实践

    本文主要介绍了Docker容器访问宿主机IP的5种实用方法,解决容器与宿主机网络通信难题,适用于开发调试、服务调用等场景,具有一定的参考价值,感兴趣的可以了解一下
    2026-04-04
  • Docker多架构镜像构建全过程

    Docker多架构镜像构建全过程

    文章介绍了如何使用DockerBuildx工具实现一次构建同时支持ARM64和AMD64平台的Docker镜像,并详细描述了构建过程、技术方案和问题排查,最终,通过脚本使用指南和常见问题解答,帮助用户更好地理解和使用该工具
    2026-01-01
  • 宝塔面板配合docker安装gogs的全过程

    宝塔面板配合docker安装gogs的全过程

    Gogs 是一款极易搭建的自助 Git 服务,如果想自己单独搭建属于自己私人的Git 服务,那么Gogs不容错过。这篇文章主要介绍了宝塔面板配合docker安装gogs,需要的朋友可以参考下
    2021-12-12
  • 使用Docker run的选项以覆盖Dockerfile中的设置详解

    使用Docker run的选项以覆盖Dockerfile中的设置详解

    今天小编就为大家分享一篇关于使用Docker run的选项以覆盖Dockerfile中的设置详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • MongoDB Docker 镜像制作与部署完整流程

    MongoDB Docker 镜像制作与部署完整流程

    该文章介绍了如何使用Docker部署MongoDB,包括创建Dockerfile、配置文件、数据库初始化脚本,构建镜像、创建和运行容器、镜像导出与导入、扩展功能、安全建议和故障排除,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • docker compose入门helloworld的详细过程

    docker compose入门helloworld的详细过程

    docker-compose是基于docker的,所以我们需要先安装docker才能使用docker-compose,接下来通过本文给大家介绍docker compose入门helloworld的过程,一起看看吧
    2021-09-09
  • 使用Docker和Nginx部署Web服务的操作指南

    使用Docker和Nginx部署Web服务的操作指南

    本文给大家介绍了Docker和Nginx部署Web服务的完美指南,Docker是一种容器化技术,它可以将应用程序及其依赖项打包到一个独立的、可移植的容器中,而Nginx则是一款高性能的Web服务器和反向代理服务器,感兴趣的朋友可以参考下
    2024-01-01
  • Docker 集成KingBase的详细过程

    Docker 集成KingBase的详细过程

    这篇文章主要介绍了Docker 集成KingBase的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-04-04
  • 迁移docker镜像到新服务器的具体操作流程

    迁移docker镜像到新服务器的具体操作流程

    在日常工作中,我们有时会需要将服务器A上的镜像上传至服务器B上,这篇文章主要介绍了迁移docker镜像到新服务器的具体操作流程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07

最新评论