docker仓库
引言docker的仓库。
引言:docker的仓库
概念:
仓库(Repository)是集中存放镜像的地方。
一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。
一、docker私有仓库
有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
本节介绍如何使用本地仓库。
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
1.1 安装运行 docker-registry
容器运行
在安装了docker后,可以通过获取官方registry 镜像来运行
[root@docker ~]# mkdir -p /opt/registry 创立挂载点
[root@docker ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:2
ddbbab873b5ebdd4db2209f1e1f2919fa8a22f5def54e6ef90632128580e1eb3
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。
这将使用官方的 registry 镜像来启动本地的私有仓库。 用户可以通过指定参数来配置私有仓库位置。
浏览器访问http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常。
1.2 验证
现在通过push镜像到registry来验证一下。
查看本地镜像:
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 4dfe6b425987 43 hours ago 204MB
nginx latest 605c77e624dd 6 months ago 141MB
tomcat latest fb5657adc892 6 months ago 680MB
registry 2 b8604a3fe854 8 months ago 26.2MB
registry latest b8604a3fe854 8 months ago 26.2MB
hello-world latest feb5d9fea6a5 9 months ago 13.3kB
centos <none> eeb6ee3f44bd 10 months ago 204MB
您在 /var/spool/mail/root 中有新邮件
要通过docker tag 将该镜像标志为要推送到私有仓库
[root@docker ~]# docker tag centos:7 localhost:5000/centos:7
通过 docker push 命令将 nginx 镜像 push到私有仓库中:
[root@docker ~]# docker push localhost:5000/centos:7
The push refers to repository [localhost:5000/centos]
174f56854903: Pushed
7: digest: sha256:7cd98a7e13194c93fe1268e9385230bb6381630d69515f8e18abbf392b976a9b size: 529
访问 http://127.0.0.1:5000/v2/_catalog 查看私有仓库目录,可以看到刚上传的镜像了:
下载私有仓库的镜像,使用如下命令;
docker pull localhost:5000/镜像名:版本号
例如
[root@docker ~]# docker pull localhost:5000/centos:7
7: Pulling from centos
Digest: sha256:7cd98a7e13194c93fe1268e9385230bb6381630d69515f8e18abbf392b976a9b
Status: Image is up to date for localhost:5000/centos:7
localhost:5000/centos:7
二、harbor的搭建
docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
2.1 搭建
下载
地址:
[root@docker ~]# wget https://github.com/goharbor/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz
修改harbor.cfg
#hostname 改为本地ip,非 Mac OS系统 可以不指定端口
hostname = 192.168.192.168.161.12:9090
#设置secretkey_path 的路径为 当前目录的data下
secretkey_path = ./data
通过运行 install.sh 构建镜像,并把服务启动起来:
[root@docker harbor]# docker -v
Docker version 20.10.17, build 100c701
[root@docker harbor]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@docker harbor]# chmod +x /usr/local/bin/docker-compose
[root@docker harbor]# docker-compose --version
docker-compose version 1.25.1, build a82fef07
[root@docker harbor]# ./install.sh
2.2 使用
访问 http://127.0.0.1:9090/ 如下:
默认 admin 用户的密码为 Harbor12345 ,可以在 harbor.cfg 进行修改。登录后如下:
可以创建项目,创建用户,给项目分配用户等等,操作都很简单
2.3 上传镜像
首先登录私有仓库,可以使用 admin 用户 ,也可以使用我们自己创建的具有上传权限的用户:
docker login -u admin -p Harbor12345 127.0.0.1:9090
要通过docker tag将该镜像标志为要推送到私有仓库,例如:
docker tag nginx:latest 127.0.0.1:9090/library/nginx:latest
上传镜像:
docker push 127.0.0.1:9090/library/nginx:latest
访问 http://127.0.0.1:9090/harbor/projects ,在 library 项目下可以看见刚上传的 nginx镜像了:
更多推荐
所有评论(0)