【docker】一文讲完docker搭建私有仓库

发布时间:2024年01月05日

一、docker搭建私有仓库方法总结

搭建Docker私有仓库主要有以下几种方式:

  1. 使用Docker官方提供的Registry镜像:Docker官方提供了一个用于构建私有镜像仓库的Registry镜像,只需将镜像下载并运行容器,然后暴露5000端口即可使用。可以通过修改Docker的配置文件daemon.json,在其中添加私有镜像仓库地址来实现。

  2. 在Docker官方网站中直接创建:在Docker的官方网站(https://hub.docker.com/)中,可以创建属于自己的账户,然后在Repository中创建自己的仓库。这种方式比较简单,但需要网络连接,且对于大规模使用可能存在一些限制。

  3. 使用第三方工具Harbor:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,提供了丰富的功能,如用户管理、镜像复制、访问控制等。此外,它还提供了图形化界面,方便用户进行操作和管理。使用Harbor需要下载并安装,同时需要Docker Compose的支持。

  4. 自行搭建本地仓库:除了使用官方或第三方的工具外,还可以自行搭建本地仓库。这种方式需要一定的技术能力和资源投入,但可以根据实际需求进行定制和优化。自行搭建本地仓库时,可以考虑使用开源的镜像仓库软件,如Nexus Repository等。

需要注意的是,在搭建Docker私有仓库时,需要考虑到安全性、可用性和扩展性等方面的问题。例如,可以添加证书加密功能和用户登录认证来提高安全性;通过负载均衡和容错机制来提高可用性;根据实际需求进行扩展和优化等。

总的来说,选择哪种方式搭建Docker私有仓库取决于具体需求和实际情况。如果只需要简单地存储和管理镜像,可以考虑使用Docker官方提供的Registry镜像或第三方工具Harbor;如果需要更多的定制和优化,可以考虑自行搭建本地仓库或使用其他开源的镜像仓库软件。

二、使用registry搭建私有仓库

使用registry搭搭建Docker私有仓库的步骤如下:

1)拉取私有仓库镜像:使用命令docker pull registry来拉取私有仓库的镜像。私有仓库本身就是一个镜像,通过该命令可以从Docker Hub或其他镜像仓库中获取。

2)启动私有仓库容器:使用命令docker run -d -p 5000:5000 --restart=always --name registry registry来启动私有仓库容器。这将创建一个名为registry的容器,将容器内的5000端口映射到主机的5000端口,并设置为总是重启。

另外,如果你希望将上传的镜像存放到本地的指定路径,可以使用-v参数来指定本地路径,例如:docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

启动成功后,可以使用 docker ps 查看

3)测试私有仓库:在浏览器中输入http://<your-server-ip>:5000/v2/_catalog,将替换为你的服务器IP地址,如果能够正常访问,说明私有仓库搭建成功。

注意:如果你的私有仓库没有使用https,需要在Docker客户端上修改/etc/docker/daemon.json文件(如果文件不存在则新建),添加私有仓库地址到"insecure-registries"列表中,然后重启Docker服务。例如,在daemon.json文件中添加以下内容:

{
  "insecure-registries": ["<your-server-ip>:5000"]
}

然后,使用命令systemctl restart docker重启Docker服务。

当配置了这个选项后,Docker 在与这些指定的镜像仓库通信时,将不再验证 TLS 证书,从而绕过了 Docker 的安全机制。

4)上传镜像到私有仓库:首先,使用docker tag命令将本地镜像标记为私有仓库的镜像,然后使用docker push命令将镜像上传到私有仓库。例如:

docker tag <image-id> <your-server-ip>:5000/<image-name>:<image-version>
docker push <your-server-ip>:5000/<image-name>:<image-version>

# 例如
docker tag e8f7073d1aa1 192.168.56.102:5000/mynginx:1.0
docker push 192.168.56.102:5000/mynginx:1.0

<image-id>替换为你要上传的镜像的ID,<your-server-ip>替换为你的服务器IP地址,<image-name><image-version>分别替换为镜像的名称和版本号。

5)已上传到私有仓库中的镜像,可以使用docker pull拉取

docker pull <仓库地址>/<镜像名称>:<标签>

以上步骤完成后,你就成功搭建了一个Docker私有仓库,并可以将镜像上传到该仓库中。其他机器可以通过拉取私有仓库中的镜像来使用该镜像。

三、使用Harbor搭建私有仓库

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。以下是使用Harbor搭建私有仓库的一般步骤:

1、安装Harbor

1) 环境准备:准备一台具有足够磁盘空间的虚拟机或物理机,建议关闭防火墙和SELinux,并确保时间同步服务已配置。

2)安装Docker和Docker Compose:在目标机器上安装Docker和Docker Compose。可以从Docker官网下载并安装Docker,然后使用pip或下载二进制文件来安装Docker Compose。

3)下载并解压Harbor安装包:从Harbor的GitHub仓库下载最新版本的离线安装包。使用wget命令下载,并使用tar命令解压。

wget https://github.com/goharbor/harbor/releases/download/vX.X.X/harbor-offline-installer-vX.X.X.tgz
tar xvf harbor-offline-installer-vX.X.X.tgz

其中,vX.X.X应替换为实际的版本号。

官网地址:https://github.com/goharbor/harbor/releases

例如,安装版本v2.10.0

wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar xvf harbor-offline-installer-v2.10.0.tgz

4) 配置Harbor:解压后,在目录下会生成一个harbor.yml.tmpl文件(复制harbor.yml.tmpl并重命名为harbor.yml)。修改此harbor.yml以满足你的需求,例如设置hostname、端口、数据库密码等。

  • hostname一定要设置,如果没有域名,先设置为本机ip地址
  • 默认文件配置了https,如果没有请先注释

5) 安装Harbor:在解压的目录下运行./install.sh脚本开始安装。安装过程中会检查环境、配置文件等,并下载所需的Docker镜像。

安装完成后,会出现如下信息

[+] Running 10/10
 ? Network harbor_harbor        Created                0.2s 
 ? Container harbor-log         Started                0.0s 
 ? Container harbor-portal      Started                0.1s 
 ? Container registry           Started                0.1s 
 ? Container redis              Started                0.1s 
 ? Container harbor-db          Started                0.1s 
 ? Container registryctl        Started                0.1s 
 ? Container harbor-core        Started                0.0s 
 ? Container harbor-jobservice  Started                0.0s 
 ? Container nginx              Started                0.0s 
? ----Harbor has been installed and started successfully.----
[root@localhost harbor]# 

6) 访问Harbor:安装完成后,使用配置的IP地址和端口(或域名)访问Harbor。默认用户名是admin,密码是Harbor12345。登录后可以创建项目、上传和下载镜像等。

例如,在浏览器中输入:http://192.168.56.120/

在这里插入图片描述

在这里插入图片描述

进入默认项目library,点击右上角的推送命令,可以看见各种方式的推送命令

在这里插入图片描述

2、使用 docker 上传镜像到Harbor

1)配置 Docker 客户端

修改 Docker 守护进程的配置,将你的仓库地址添加到不安全注册表的列表中。这可以通过编辑 /etc/docker/daemon.json 文件来实现(如果文件不存在,则创建一个):

{
    "insecure-registries": ["192.168.56.120"]  
}

然后重启 Docker 守护进程:sudo systemctl restart docker

注意:这里的 192.168.56.120 是你的 Docker 仓库的 IP 地址。如果你使用的是域名,请替换为相应的域名。

2)使用 docker 进行登录和推送

在推送镜像之前要做一次登录

docker login 192.168.56.120 -u admin -p Harbor12345

Docker 客户端会将认证信息存储在 ~/.docker/config.json 文件中(对于 Linux 和 macOS 用户)或 Windows 用户的相应配置位置。只要这个文件中的认证信息没有过期或被手动删除,你就可以继续使用 Docker 客户端与仓库进行交互,而无需重新登录。

然后,先使用docker tag把镜像按照约定格式命名,再使用docker push推送

docker tag 237f00d92168 192.168.56.120/library/mynginx:1.1
docker push 192.168.56.120/library/mynginx:1.1

登录Harbor可以看见镜像已经推送上来了

在这里插入图片描述
3)使用docker pull 拉取镜像

docker pull <仓库地址>/<镜像名称>:<标签>
# 例如
docker pull 192.168.56.120/library/mynginx:1.1

注意:在生产环境中,建议使用HTTPS来保护镜像传输的安全,并考虑备份和恢复策略以防止数据丢失。此外,随着Harbor版本的更新,安装和配置过程可能会有所变化,建议参考官方文档进行操作。

官网地址:https://github.com/goharbor/harbor/releases

文章来源:https://blog.csdn.net/wlddhj/article/details/135412806
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。