背景
在使用Docker过程中,我们需要将自己制作的Docker镜像保存到Docker仓库中以便于更好的管理Docker镜像,Docker仓库又分为私有仓库与公有仓库,其中公有仓库是指Docker Hub(https://hub.docker.com/),在我们使用docker pull命令去拉取镜像时就会从这个地址去寻找并下载到本地。在实际的工作中,我们不会把制作的项目docker镜像推到公有仓库中,所以私有仓库的搭建非常有必要。在Docker私有仓库中,Docker官方提供的registry与harbor是用的比较多的两种类型仓库,其中harbor是用的最多的。
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
输出{}信息,说明仓库容器已经运行起来
使用
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
查看指定镜像的tag列表 http://IP地址:5000/v2/镜像名/tags/list
Harbor仓库
搭建
docker官方所提供的registry仓库功能比较简单,没有UI页面统一进行管理,当镜像及镜像版本较多时不太方便,Harbor基于docker官方的registry,在其基础上增加了非常多的功能,比如安全、访问控制和管理等等。Harbor的Github地址:https://github.com/goharbor/harbor
系统配置需求:
- 基于Linux主机
- docker 17.06.0-ce+
- docker-compose 1.18.0+
安装使用:
Step1:下载Harbor安装包到Docker宿主机
本文使用的版本是[v2.2.2]
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
使用
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新建项目
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端看到,已经有了这个镜像了:
欢迎来到testingpai.com!
注册 关于