网站首页 > 博客文章 正文
Docker Registry 是 Docker 生态系统中的核心组件,主要负责存储、管理和分发 Docker 镜像。它允许用户构建、存储和分发自己的容器镜像,从而实现应用程序的快速部署和迁移。
用户可以使用 Docker Registry 官方镜像搭建自己的私有镜像存储库,这对于需要将镜像存储在企业内部或对外网隔离的场景非常重要。
Docker Registry属于轻量级的docker仓库。
当前docker公网上的仓库时好时坏,可以通过建立本地的私有仓库Docker Registry,把一些常用的镜像拉取到本地后,存在私有仓库中,以备需要使用这些镜像的时候可以在本地拉取。
本文将在AlpineLinux系统环境下搭建Docker Registry的服务,并且演示如何简单的使用这个私有仓库。其他发行版本的部署方法和步骤类似。也可以参考这篇文章进行部署。
一、Docker搭建本地私有仓库步骤
1、下载 registry 镜像
Docker Registry的部署相对比较简单,拉取镜像,启动容器,配置客户端的配置文件即可。
拉取镜像前,确保已经安装了docker。如果没有安装docker,可以参考前面的部署docker的文章,此处不在赘述。
下面的命令拉取了最新版本的registry
localhost:~# docker pull registry:latest
latest: Pulling from library/registry
1cc3d825d8b2: Pull complete
85ab09421e5a: Pull complete
40960af72c1c: Pull complete
e7bb1dbb377e: Pull complete
a538cc9b1ae3: Pull complete
Digest: sha256:ac0192b549007e22998eb74e8d8488dcfe70f1489520c3b144a6047ac5efbe90
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
拉取完成后,我们看看镜像,可以看到,registry的镜像仅25.4M
localhost:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 75ef5b734af4 12 months ago 25.4MB
2、配置daemon.json文件
这个步骤为需要用到私有仓库的docker都需要修改的配置,编辑 daemon.json 文件,如果没有这个文件,可以创建一个:
localhost:~# vi /etc/docker/daemon.json
在文件中添加私有镜像仓库的地址,registry-mirrors 为docker的加速仓库源,如果用不着,可以不用理会。
{
"insecure-registries": ["192.168.10.153:5000"],
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
重启docker服务
localhost:~# rc-service docker restart
* WARNING: you are stopping a boot service
* Stopping Docker Daemon ... [ ok ]
* /var/log/docker.log: correcting owner
* Starting Docker Daemon ...
创建目录存放镜像
mkdir -p /data/registry
3、运行 registry 容器
下面是不启动https的方式启动 docker registry:
localhost:~# docker run -d -p 5000:5000 --name=registry -v /data/registry:/var/lib/registry -e REGISTRY_HTTP_ADD
R=0.0.0.0:5000 registry:latest
46bc18c5e035fb5097d2eec71b5c95b87957db6a7f7356d771a81897e6f9c61e
localhost:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46bc18c5e035 registry:latest "/entrypoint.sh /etc…" 8 seconds ago Up 7 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
运行完成后,使用下面的命令来访问仓库,因为咱们还没有推镜像到仓库,会得到一个空的结果。
localhost:~# curl 192.168.10.153:5000/v2/_catalog
{"repositories":[]}
二、推拉镜像测试私有仓库
咱们拉取一个nginx的镜像,来测试一下这个部署包的私有仓库是否可以正常使用。
1、拉取nginx的镜像
为了简单,就拉取一个基于alpine做的nginx镜像,这样的镜像一般都比较小:
localhost:~# docker pull nginx:alpine
alpine: Pulling from library/nginx
43c4264eed91: Pull complete
d1171b13e412: Pull complete
596d53a7de88: Pull complete
f99ac9ba1313: Pull complete
fd072e74e282: Pull complete
379754eea6a7: Pull complete
45eb579d59b2: Pull complete
472934715761: Pull complete
Digest: sha256:2140dad235c130ac861018a4e13a6bc8aea3a35f3a40e20c1b060d51a7efd250
Status: Downloaded newer image for nginx:alpine
docker.io/library/nginx:alpine
localhost:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx alpine cb8f91112b6b 13 days ago 47MB
registry latest 75ef5b734af4 12 months ago 25.4MB
可以看到,拉取下来的镜像仅47MB,相较于基于nginx:latest大小192MB的镜像还要小上一些。
2、为镜像打标签
用docker tag为nginx镜像打上新的标签,这个标签需要以docker registry仓库的服务器IP加端口开头,
localhost:~# docker tag nginx:alpine 192.168.10.153:5000/nginx:private
localhost:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.10.153:5000/nginx private cb8f91112b6b 13 days ago 47MB
nginx alpine cb8f91112b6b 13 days ago 47MB
registry latest 75ef5b734af4 12 months ago 25.4MB
打标签后,可以看到过了一个镜像,但是看IMAGE ID,其实还是同一个镜像,只是多了一个别名而已。
3、上传到私有仓库
使用docker push将
localhost:~# docker push 192.168.10.153:5000/nginx:private
The push refers to repository [192.168.10.153:5000/nginx]
528b47987bcf: Pushed
a533c9e2e114: Pushed
6033613561cc: Pushed
0de02d5b2d31: Pushed
f80bfdacda57: Pushed
1241fe31c0bf: Pushed
4e9e0d6ba2cc: Pushed
63ca1fbb43ae: Pushed
private: digest: sha256:76684c43f32804f2601310a067fd5039f85bdf76bb23a477c2a7440f12b883fd size: 1989
4、列出私有仓库的所有镜像
再次查看仓库,可以看到,仓库里面多了一个nginx的镜像
localhost:~# curl 192.168.10.153:5000/v2/_catalog
{"repositories":["nginx"]}
利用curl http://192.168.118.16:5000/v2/镜像名/tags/list,可以查看这个镜像的标签信息
localhost:~# curl 192.168.10.153:5000/v2/nginx/tags/list
{"name":"nginx","tags":["private"]}
5、先删除本地的nginx镜像,再从仓库下载进行测试
通过 IMAGE ID 将本地两个标签的同一个nginx镜像删除
localhost:~# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.10.153:5000/nginx private cb8f91112b6b 13 days ago 47MB
nginx alpine cb8f91112b6b 13 days ago 47MB
registry latest 75ef5b734af4 12 months ago 25.4MB
localhost:~# docker rmi -f cb8f91112b6b
Untagged: 192.168.10.153:5000/nginx:private
Untagged: 192.168.10.153:5000/nginx@sha256:76684c43f32804f2601310a067fd5039f85bdf76bb23a477c2a7440f12b883fd
Untagged: nginx:alpine
Untagged: nginx@sha256:2140dad235c130ac861018a4e13a6bc8aea3a35f3a40e20c1b060d51a7efd250
Deleted: sha256:cb8f91112b6b50ead202f48bbf81cec4b34c254417254efd94c803f7dd718045
Deleted: sha256:09f99be15f4ff5db64a85472139db4395c3c14e00c7a90f37499237625556ed4
Deleted: sha256:a3a02df44147c897aef503f952dfa230308fbb8a9bbb5ca28fac36b7b866d6d6
Deleted: sha256:1f47bf4b72792d8c5ea114da41dba55e908ad3b920e8076bec908c771b81d4b4
Deleted: sha256:415c1787dcb7fd187fa40535785c2b3d14d2920ea736ec2a745e1860e92b312a
Deleted: sha256:d0a43343a6d59e04b17a9cc72934e435f6609689259eb4e4adf5658de3eaf8e0
Deleted: sha256:79d58bb4d8ae0b5b8c8cd790f4a8ae29facd883297f357932d3a5266b4f4e30d
Deleted: sha256:adffcb7a535b6915444890e65729bc15929c8fd060c7b4641c57fff05c7f5999
Deleted: sha256:63ca1fbb43ae5034640e5e6cb3e083e05c290072c5366fcaa9d62435a4cced85
删除完成后
localhost:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 75ef5b734af4 12 months ago 25.4MB
从本地仓库把镜像重新拉取下来
localhost:~# docker pull 192.168.10.153:5000/nginx:private
private: Pulling from nginx
43c4264eed91: Pull complete
d1171b13e412: Pull complete
596d53a7de88: Pull complete
f99ac9ba1313: Pull complete
fd072e74e282: Pull complete
379754eea6a7: Pull complete
45eb579d59b2: Pull complete
472934715761: Pull complete
Digest: sha256:76684c43f32804f2601310a067fd5039f85bdf76bb23a477c2a7440f12b883fd
Status: Downloaded newer image for 192.168.10.153:5000/nginx:private
192.168.10.153:5000/nginx:private
localhost:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.10.153:5000/nginx private cb8f91112b6b 13 days ago 47MB
registry latest 75ef5b734af4 12 months ago 25.4MB
6、查看私有仓库镜像的命令
上面使用到的查看仓库的命令,是在命令行中使用,也可以通过浏览器来查看仓库的内容
1)查看私有仓库执行此命令:
curl http://ip:端口/v2/_catalog
浏览器的输出效果:
2)获取某个镜像的标签列表:
curl http://ip:端口/v2/私有仓库镜像名称/tags/list
总结
Docker Registry 做为轻量级的docker私有仓库,细心的同学可能从上面的演示中察觉到,它是公开的,不能做用户管理和仓库项目的管理,这对于大型公司多个项目组的协助就不是很好了,这种场景下,就应该使用另外一个开源的仓库 Harbor 了。下次再来讲一下关于 Harbor 私有话仓库的部署。
猜你喜欢
- 2024-11-06 docker仓库Harbor的搭建教程(docker 仓库搭建)
- 2024-11-06 【服务器】创建docker私有仓库从未如此简单
- 2024-11-06 DOCKER本地仓库(docker本地仓库源文件丢失)
- 2024-11-06 如何搭建自己的docker私有仓库(内网搭建docker私有仓库)
- 2024-11-06 学习笔记-Docker 仓库 - 私有仓库
- 2024-11-06 手把手教你使用Docker部署Gitlab仓库
- 2024-11-06 极简Docker仓库操作(docker仓库的作用)
- 2024-11-06 docker容器仓库私服建立(docker仓库的创建)
- 2024-11-06 Docker 系列四(自定义仓库)(docker安装自定义存储目录)
- 2024-11-06 Docker 搭建 GibLab 代码管理仓库
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)