Docker 搭建私有仓库

本贴最后更新于 1023 天前,其中的信息可能已经天翻地覆

背景

在使用Docker过程中,我们需要将自己制作的Docker镜像保存到Docker仓库中以便于更好的管理Docker镜像,Docker仓库又分为私有仓库与公有仓库,其中公有仓库是指Docker Hub(https://hub.docker.com/),在我们使用docker pull命令去拉取镜像时就会从这个地址去寻找并下载到本地。在实际的工作中,我们不会把制作的项目docker镜像推到公有仓库中,所以私有仓库的搭建非常有必要。在Docker私有仓库中,Docker官方提供的registry与harbor是用的比较多的两种类型仓库,其中harbor是用的最多的。

image.png

Docker registry仓库

Docker官方提供的Docker registry仓库本身就是一个镜像,我们只需要将此镜像拉取到本地,运行容器即可

搭建

Step1:拉取私有仓库镜像

docker pull registry:2

Step2:启动仓库容器

docker run -d -v /myregistry:/var/lib/registry -p 5000:5000 --name myregistry registry:2

在启动容器的时候,我们会暴露容器内部的5000端口并映射到宿主机的5000端口,同时将宿主机的/myregistry路径与容器内部的/var/lib/registry路径映射,从而可以将数据持久化保存下来。

Step3:浏览器访问http://IP地址:5000/v2

输出{}信息,说明仓库容器已经运行起来

image.png

使用

Step1:将要推送的镜像重命名

在往registry仓库中推送镜像时,我们需要注意将镜像名设为指定规范:[仓库IP地址:5000/镜像名],如

docker tag tomcat 127.0.0.1:5000/tomcat

因为registry仓库是在本地运行,所以用127.0.0.1地址,如果是在其他服务器上面,那么使用其对外的IP地址即可

Step2:上传镜像

docker push 127.0.0.1:5000/tomcat

查看仓库中所有的镜像:http://IP地址:5000/v2/_catalog

image.png

查看指定镜像的tag列表 http://IP地址:5000/v2/镜像名/tags/list

image.png

Harbor仓库

搭建

docker官方所提供的registry仓库功能比较简单,没有UI页面统一进行管理,当镜像及镜像版本较多时不太方便,Harbor基于docker官方的registry,在其基础上增加了非常多的功能,比如安全、访问控制和管理等等。Harbor的Github地址:https://github.com/goharbor/harbor

image.png

系统配置需求:

安装使用:

Step1:下载Harbor安装包到Docker宿主机

本文使用的版本是[v2.2.2]

image.png

Step2:解压Harbor压缩包

tar -xzvf harbor-offline-installer-v2.2.2.tgz

需要注意的是harbor安装需要有docker compose,如果没有会报错,执行

yum -y install docker-compose

Step3:编辑Harbor配置文件

cp harbor.yml.tmpl harbor.yml #复制harbor配置文件
mkdir -p /opt/application/harbor #此目录用于存放harbor数据
vim harbor.yml
hostname: xx.xx.xx.xx #修改hostname为主机的IP地址
port: 8888 #修改端口,默认80可能会被其他服务使用
#port: 443 #注释掉https协议相关(如果不需要配置https)
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path
data_volume: /opt/application/harbor #指定harbor挂载路径,保存harbor数据

Step4:执行安装

./install.sh
[root@iZwz90p2g1civvk5m1xqbfZ harbor]# ./install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.7

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 1.18.0

[Step 2]: loading Harbor images ...
Loaded image: goharbor/harbor-jobservice:v2.2.2
Loaded image: goharbor/harbor-exporter:v2.2.2
Loaded image: goharbor/nginx-photon:v2.2.2
Loaded image: goharbor/trivy-adapter-photon:v2.2.2
......

Step5:访问harbor

默认账号:admin 密码:Harbor12345

image.png

使用

Step1:docker客户端登录上Harbor

[root@iZwz90p2g1civvk5m1xqbfZ harbor]# docker login 127.0.0.1:8888
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

因为Harbor和Docker客户端都在同一台机器,所以使用127.0.0.1,其他的主机访问Harbor使用对外的IP地址即可。

Step2:Harbor新建项目

image.png

Step3:将要推送的镜像重命名

在往harbor仓库中推送镜像时,我们需要注意将镜像名设为指定规范:[仓库IP地址:端口/项目名/镜像名],如

docker tag tomcat 127.0.0.1:8888/my_project/tomcat

Step4:推送镜像

docker push 127.0.0.1:8888/my_project/tomcat

可以在harbor的web端看到,已经有了这个镜像了:

image.png

  • Docker
    17 引用 • 5 回帖 • 3 关注
3 操作
shakebabe 在 2021-06-30 16:49:53 更新了该帖
shakebabe 在 2021-06-29 21:55:15 更新了该帖
shakebabe 在 2021-06-29 21:31:39 更新了该帖
回帖
请输入回帖内容 ...