docker镜像仓库

docker hub仓库

Docker Hub是Docker公司维护的公共Registry。用户可以将自己的镜像保存到Docker Hub免费的 repository 中。如果不希望别人访问自己的镜像,也可以购买私有repository

上传镜像到docker hub公有仓库

1、在https://hub.docker.com/注册一个Docker Hub账号,如图所示

在这里插入图片描述

2、在Dokcerhost上登陆dockerhub

[root@docker~] dockerlogin
LoginwithyourDockerIDtopushandpullimages...

Username:ydhisbug		# 用户名
Password:ydh@redhat		# 密码

WARNING!Yourpasswordwillbestoredunencryptedin/root/.docker/config.json.Configureacredentialhelpertoremovethiswarning.See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store LoginSucceeded

3、DockerHub为了区分不同用户的同名镜像,镜像名中要包含用户名,完整格式为username/xxx:tag,通过docker tag命令重命名镜像名字

[root@docker~] dockerpullcentos:7
[root@docker~] dockerimages
REPOSITORY 		TAG		IMAGEID			CREATED			SIZE
centos			7		eeb6ee3f44bd	9monthsago		204MB

[root@docker~] dockertagcentos:7cyisbug/centos:7
[root@docker~] dockerimages
REPOSITORY 		TAG 		IMAGE ID 		CREATED 		SIZE
cyisbug/centos 	 7 			 eeb6ee3f44bd 	 9 months ago 	 204MB
centos 			7 		    eeb6ee3f44bd 	9 months ago 	204MB

4、通过docker push命令把本地镜像cyisbug/centos:7推送到公共仓库Docker Hub

[root@docker ~] docker push cyisbug/centos:7

5、登录 https://hub.docker.com,在Public Repository中就可以看到本地上传的镜像,如果要删除镜 像,只能登陆web界面删除。如图所示

在这里插入图片描述

阿里云公有仓库

1、登录https://cr.console.aliyun.com/cn-hangzhou/instances/repositories阿里云控制台首页。创建镜像仓库。命名空间名称为cygalaxy,仓库名称为edu。我们的镜像就是要上传到cygalaxy/edu中。如图所示

在这里插入图片描述

在这里插入图片描述

2、在Dokcerhost上登陆阿里云仓库,并上传镜像。这里需要注意阿里云仓库对镜像名的格式要求

[root@docker~] dockerlogin--username=cyisbugregistry.cn-hangzhou.aliyuncs.com
Password:redhat		# 密码
[root@docker~] dockertagcentos:7registry.cn-hangzhou.aliyuncs.com/cygalaxy/edu:centos7 
[root@docker~] dockerimages
REPOSITORY 				TAG 		IMAGE ID 			CREATED SIZE
cyisbug/centos 			 7 			eeb6ee3f44bd 		9 months ago 204MB
centos 					7 		    eeb6ee3f44bd 		9 months ago 204MB
regis.../cygalaxy/edu    centos7 	  eeb6ee3f44bd 		  9 months ago 204MB

[root@docker ~] docker push registry.cn-hangzhou.aliyuncs.com/cygalaxy/edu:centos7

3、查看edu仓库的镜像版本,可以看到之前上传的镜像,如果要删除镜像,只能在web管理界面上操 作。如图所示

在这里插入图片描述

  • Docker Hub是Docker公司维护的公共Registry。用户可以将自己的镜像保存到Docker Hub免费的 repository 中

  • 在Dokcer host上使用docker login命令可以登陆docker hub

  • docker push命令可以将本地镜像上传到仓库中

上传镜像到docker registry私有仓库

1、下载registry镜像,运行容器并暴露5000端口,同时添加–restart always参数,可是使容器随着Docker host的启动而启动

[root@docker ~] docker pull registry:2
2: Pulling from library/registry
79e9f2f55bf5: Pull complete
0d96da54f60b: Pull complete
5b27040df4a2: Pull complete
e2ead8259a04: Pull complete
3790aef225b9: Pull complete
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:2
docker.io/library/registry:2

[root@docker ~] docker run -d -p 5000:5000 --restart always --name cyregistry registry:2
d18f87724be3938876705f6c8d48f7c0c2ce377aae3b3c947b491588536cc9ec

2、registry默认是不需要身份验证就能直接上传镜像,但是需要修改镜像名来指定仓库地址,镜像格式为 ip:port/xxx:tag,在通过docker push将该镜像推送到私有仓库

[root@docker ~] docker tag centos:7 172.25.0.100:5000/centos:7
[root@docker ~] docker images
REPOSITORY 					TAG 		IMAGE ID 		CREATED 		SIZE
registry 					2 			b8604a3fe854 	7 months ago 	26.2MB
172.25.0.100:5000/centos 	 7 			  eeb6ee3f44bd 	  9 months ago 	  204MB

3、设置docker的私有仓库地址

[root@docker ~] vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://14lrk6zd.mirror.aliyuncs.com"],"insecure-registries": ["172.25.0.100:5000"]
}
[root@docker ~] systemctl restart docker
[root@docker ~] docker push 172.25.0.100:5000/centos:7
The push refers to repository [172.25.0.100:5000/centos]
174f56854903: Pushed
7: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529
[root@docker ~] curl http://172.25.0.100:5000/v2/_catalog
{"repositories":["centos"]}
  • Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库,Docker官方提供了一个搭建 私有仓库的镜像 registry

  • 添加–restart always参数,可是使容器随着Docker host的启动而启动

  • registry默认是不需要身份验证就能直接上传镜像,但是需要修改镜像名来指定仓库地址

docker harbor仓库的使用

harbor仓库概述

Harbor是一个用于存储和分发Docker镜像的企业级 Registry服务器,通过添加一些企业必须的功能特性,例如安 全、标识和管理等,扩展了开源Docker Distribution。作为一个 企业级私有Registry服务器,Harbor提供了更好的性能和安全。 另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控 制和活动审计等

harbor的组件

  • Harbor依赖的外部组件 Nginx(即proxy代理层):Nginx前端代理,主要用于分发前端页面UI访问和 镜像上传和下载流量。 Registry v2:镜像仓库,负责存储镜像文件。 Database(Mysql或者Postgresql):为core services提供数据库服务,负责 存储用户权限、审计日志、Docker image分组信息等数据

  • Harbor自有组件

Core services(Admin Server):这是Harbor的核心功能,主要提供以下服务:

(1)UI:提供图形化界面,帮助用户管理registry上的镜像(image),并对用户进行授权

(2)webhook:为了及时获取registry上image状态变化的情况,在Registry上配置webhook,把状态传递给 UI模块

(3)Auth服务:负责根据用户权限给每个docker push/pull命令签发token。Docker客户端向Registry服务发 起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求

(4)API:提供Harbor RESTful API。 Replication Job Service:提供多个Harbor实例之间的镜像同步功能。 Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析

创建Harbor仓库

1、下载https://github.com/goharbor/harbor/releases或者百度网盘下载:

地址:https://pan.baidu.com/s/1YUbl_gHhiKpUfSwsIkWbZg,提取码:5669

2、将下载好的压缩包上传到主机中,并解压

[root@docker ~] tar -zxvf harbor-offline-installer-v1.10.10.tgz
harbor/harbor.v1.10.10.tar.gz 
harbor/prepare 
harbor/LICENSE 
harbor/install.sh 
harbor/common.sh 
harbor/harbor.yml

[root@docker harbor] ls
common.sh harbor.v1.10.10.tar.gz **harbor.yml** install.sh LICENSE prepare

3、修改harbor.yml文件中的hostname,监听本主机IP,把https等内容注释掉,我们不用ssl功 能,同时还能通过该文件定义harbor的登陆密码,默认密码为Harbor12345

[root@docker harbor] vim harbor.yml
hostname: 172.25.0.100
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
harbor_admin_password: Harbor12345

4、先安装docker-compose,harbor是被docker-compose控制的,然后再运行 ./install.sh开始安装harbor,安装完毕后,可以通过 docker-compose start/stop开启/关闭harbor

[root@docker harbor] yum -y install epel-release
[root@docker harbor] yum -y install docker-compose
[root@docker harbor] ./install.sh
Step 0]: checking if docker is installed ... 
Note: docker version: 20.10.17
[Step 1]: checking docker-compose is installed ... 
Note: docker-compose version: 1.18.0
........ 
✔ ----Harbor has been installed and started successfully.----

5、安装完毕后,访问http://ip/harbor,即可显示harbor图形化管理界面,账号密码为 admin/Harbor12345。,点击新建项目。如图所示,创建仓库,仓库名为cygalaxy,点击确认

在这里插入图片描述

在这里插入图片描述

6、Docker默认是按https请求的,由于搭的私有库是http的,所以需要修改Docker配置,添加信任仓库。然后再修改镜像名,上传镜像

[root@docker ~] vi /etc/docker/daemon.json
{
  "insecure-registries": ["172.25.0.100"]
}
[root@docker ~] systemctl daemon-reload
[root@docker ~] systemctl restart docker
[root@docker ~] docker tag centos:7 172.25.0.100/cygalaxy/centos:7
[root@docker ~] docker login http://172.25.0.100 -u admin -p Harbor12345
[root@docker harbor] docker push 172.25.0.100/cygalaxy/centos:7

7、最后在harbor的管理界面中,可以看到galayun仓库中,就有之前上传的镜像,如果想要删除镜 像,只能通过web管理界面删除。如图所示

在这里插入图片描述

  • 常用的公共镜像仓库有Dockerhub、阿里云仓库、或者daocloud仓库

  • 常用的私有镜像仓库有Docker官方提供的registry仓库和harbor仓库

  • Docker自包含打包技术,其实指的就是镜像,Docker镜像一般是由运维工程师或者开发工程师创建的

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐