[docker]在本地/内部配置部署docker镜像仓库

需求

通常我们在docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用。显然,这在某些场景下是不适用的,比如企业级别的隐私项目,又或者是公司完全处于内网状态不能访问外网,再或者是想个性化定制某些配置等等,这时就需要用到私有存储库了

注意:私有存储库是基于docker hub在线存储库的registry镜像搭建的。

前置条件

  • debian/ubuntu/centos
  • 已安装docker

步骤

  1. 拉取并运行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
  1. 写入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 # 重启服务
  1. 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库类似:
通过上述地址可追溯到相应的镜像及其版本。

posted @   wildkid1024  阅读(699)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示