Docker镜像仓库实战:上传与管理全攻略
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镜像一般是由运维工程师或者开发工程师创建的
更多推荐


所有评论(0)