[docker]在本地/内部配置部署docker镜像仓库
需求
通常我们在docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用。显然,这在某些场景下是不适用的,比如企业级别的隐私项目,又或者是公司完全处于内网状态不能访问外网,再或者是想个性化定制某些配置等等,这时就需要用到私有存储库了
注意:私有存储库是基于docker hub在线存储库的registry镜像搭建的。
前置条件
- debian/ubuntu/centos
- 已安装docker
步骤
- 拉取并运行registry镜像
docker pull registry:latest
docker run -d \--name registry2 \-p 5000:5000 \--restart=always \-v /opt/data/registry:/var/lib/registry # 本地文件夹映射 \-e SQLALCHEMY_INDEX_DATABASE=sqlite:opt/docker-image/docker-registry.db #持久化 \-e STORAGE_PATH=/opt/docker-image registry
- 写入docker配置文件
vim /etc/docker/daemon.json
{ "experimental": false, "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ], "insecure-registries": [ "192.168.1.6:5000" ], "debug": true, "live-restore": true # 重载docker守护进程而不重启容器 }
systemctl restart docker.service # 重启服务
- push和pull验证测试
确认registry正在运行/查询所有镜像:
curl http://192.168.1.6:5000/v2/_catalog
docker pull hello-world # 从公有仓库拉取镜像 docker tag hello-world:latest 私有仓库IP:5000/hello-world:latest # 更改tag docker push 私有仓库IP:5000/hello-world:latest # push到私有镜像 docker pull 私有仓库IP:5000/镜像名称:镜像版本号 # 从其他客户端拉取
docker镜像的命名规则:
hub.docker.com/study/mysql:lastest
服务器地址/命名空间/镜像名称:版本号
这是一个完整的image名称,学习过golang语言的朋友大概很熟悉这种规则,与golang库类似:
通过上述地址可追溯到相应的镜像及其版本。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!