docker之本地私有仓库构建

本文介绍如何在本地环境中搭建无认证的Docker私有仓库,包括下载镜像、配置运行参数、验证仓库功能及推送与拉取镜像的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker仓库

Docker Hub是一个由Docker公司负责维护的公共注册中心,它包含了超过15,000个可用来下载和构建容器的镜像,并且还提供认证、工作组结构、工作流工具(比如webhooks)、构建触发器以及私有工具(比如私有仓库可用于存储你并不想公开分享的镜像),但是私有仓库就跟github类似,都是收费的,而且速度也不是很快,如果我们为你仅仅只是为了个人使用,或者小公司范围内使用,我么可以在本地搭建自己的私有仓库。

1、搭建本地无认证的私有仓库

1、首先先下载,docker 为我们提供的搭建私有仓库的镜像

docker pull registry

2、执行如下命令,启动私有仓库

docker run -d  --restart always \ ##启动docker时,自动启动该镜像
--name my-registry \ ##为镜像启动后容器的名字
-p 8000:5000\  ##端口映射,registry镜像默认暴露5000端口,我们可以通过设置本机8000端口映射到5000端口,此时我们就可以以通过8000端口访问
 -v /root/my-registry/registry:/var/lib/registry \   ##将我们上传的镜像,保存到本地  /root/my-registry/registry 目录,防止因为,对registry 镜像操作失误,而造成数据丢失
 registry  ##镜像名,对应上面我们下载的构建私有仓库的镜像

3、查看结果

[root@love2 ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
782ebd106f70        registry            "/entrypoint.sh /etc…"   8 minutes ago       Up 8 minutes        0.0.0.0:8000->5000/tcp   my-registry

#此时我们已经看到了启动的镜像

4、此时我们通过浏览器访问主机所在的ip,v2/_catalog是一个默认路径

http://192.168.8.103:8000/v2/_catalog

结果如下,空仓库,因为我们还没有向里面推送镜像

{"repositories":[]}

5、推送本地镜像到私有仓库

1、先对要上传的镜像改名,使用的hello-world镜像通过pull命令拉取
	docker tag hello-world 127.0.0.1:8000/hello:v1.0
	
2、查看本机已有的镜像
[root@love2 ~]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
registry               latest              f32a97de94e1        5 months ago        25.8MB
127.0.0.1:8000/hello   v1.0                fce289e99eb9        7 months ago        1.84kB
hello-world            latest              fce289e99eb9        7 months ago        1.84kB

3、推送镜像
[root@love2 ~]# docker push 127.0.0.1:8000/hello
The push refers to repository [127.0.0.1:8000/hello]
af0b15c8625b: Pushed
v1.0: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524

#####这里可能会报一个异常,因为docker默认使用https协议进行传输,但是我们传输时使用的是http协议,因为我是在本机搭建的私有仓库,所以不会报错。但如果是远程服务器,我们为需要设置一下,允许使用http协议进行传输
修改下配置文件,vim  /etc/docker/daemon.json
添加如下,[]内为你的ip和端口
{"insecure-registries":["127.0.0.1:8000"]}

4、我们再次访问,查看结果,此时已经有一个镜像了
http://192.168.8.103:8000/v2/_catalog
{"repositories":["hello"]}

6、拉取本地私有仓库镜像到本地

docker pull 127.0.0.1:8000/hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值