Docker 搭建私人仓库

docker 搭建私人仓库有下面几种方式:

  • 1、docker hub 官方私人镜像仓库
  • 2、本地私有仓库

官方私人镜像仓库搭建很简单(就是需要有魔法,否则就异步到第二种方法吧),只需要 login、pull、tag、push 几种命令就完事了。而本地私人镜像仓库则比较麻烦一点而且只能存储在本地不能公开。

下面我们就来简单的介绍一下怎么搭建自己的私人仓库吧!

官方镜像仓库

首先,我们需要在 docker hub 这里申请注册一个账号并登录,同时也要在 Docker Desktop 中进行登录。完成登录以后,我们首先在命令行中使用命令进行登录

sh 复制代码
docker login

出现 Login Succeeded 就代表登录成功了!

注:你的身份验证凭证将被存储在本地目录的 .dockercfg 文件中

接着我们查看一下本地镜像,可以看到这里有一个 nginx,待会儿就拿这个进行测试吧!

sh 复制代码
docker images

首先对镜像打上 tag,也就是重命名。

注:重命名格式需要 用户名/镜像名:版本号

sh 复制代码
docker tag nginx codegetters/nginx:1.0.0

检查一下看看是否成功打上了 tag

到了这里我们就完成了大部分的工作了,只需要 push到自己的账号中就好了。

注:push 的镜像名要写全包括最后的版本号,否则就会失败

sh 复制代码
docker push codegetters/nginx:1.0.0

完成以后我们就可以删除本地镜像了,不过删除不是我们的重点就不过多展示了。我们接着进入 docker hub 并登录自己的账号。点击 Repositories 就可以看到我们的仓库中已经有了 nginx

到了这里我们就算完成了,如果想要从自己的仓库中拉下来就执行下面的命令即可

sh 复制代码
docker pull codegetters/nginx:1.0.0

本地私有仓库

为什么使用私用仓库?

公司的项目一般不予许我们上传到 Docker Hub 这类的公共仓库中,所有学会创建一个私有仓库也是非常必要的。虽然 hub.docker 上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案。

官方提供了 docker hub 来作为一个公开的集中仓库。然而,本地访问 Docker Hub 速度往往很慢,并且很多时候需要一个本地的私有仓库只供网内使用。

registry 就是管理 docker 镜像的服务。接下来的操作也是主要使用 registry 这个镜像进行,

首先我们先拉取 registry 镜像

sh 复制代码
docker pull registry

接着让 registry 跑起来并且将镜像的 /var/lib/registry 挂载到我们的本地 E:\software_cache\docker 这个目录中,同时将本地的 5000 端口映射到镜像中。

sh 复制代码
docker run -d -p 5000:5000 -v E:\software_cache\docker:/var/lib/registry --restart=always registry

运行成功后可以访问 ip:5000/v2 如果是下图的状态就算运行成功了。

访问 ip:5000/v2/_catalog 查看镜像仓库情况,这里的空数组表明还没有上传任何镜像

接下来我们打开 docker desktop 打开设置,将自己的 ip:5000 添加到下面的数组中(没有的话需要自己的添加)以此允许本地推送镜像,如果是 Linux 的话,则需要找到 /etc/docker/daemon.json (没有需要自己创建)

  "insecure-registries": [
    "http://xxx.xxx.xxx.xxx:5000"
  ],

完成设置以后,我们就可以安按照上面的操作流程了。先对镜像打上 tag 并检查一下

注:重命名格式需要 用户名/镜像名:版本号

sh 复制代码
docker tag nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

docker images

完成 tag 后就将镜像推送到我们的本地仓库了

注:push 的镜像名要写全包括最后的版本号,否则就会失败

sh 复制代码
docker push xxx.xxx.xxx.xxx:5000/nginx:1.0.0

这个时候我们访问刚才的页面,就显示了刚才推送的镜像-nginx

当然,我们也可以使用命令也可以进行查看是否成功推送

sh 复制代码
curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog

也可以使用这个命令来访问本地仓库的 tag 列表

sh 复制代码
curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog | python -m json.tool

我们来运行一下 registry 中的镜像看看是否运行能够运行成功。这里我是将本地的 80 端口映射到 nginx 中的 80 端口了

sh 复制代码
docker run -d -p 80:80 --name nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

我们访问一下本地 ip:80 出现了 nginx 页面就表明搭建成功了!

使用 Harbor 管理仓库

什么是 Harbor

harbor 是一个由 vm 公司开源的企业级容器镜像仓库,有以下功能:

管理用户界面

基于角色的访问控制

LDAP/AD 集成及日志审计等基本运维操作

Harbor的三种安装方式(这里我就选择 离线安装了):

  • 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大
  • OVA安装程序(第三方):当用户具有vCenter环境时,使用此安装程序,在部署 OVA后启动Harbor

前置准备:下载 Harbor online 安装包 中的 harbor-offline-installer-vx.x.x.tgz 到本地进行解压缩,然后将 harbor.yml.tmpl 文件复制并重命名为 harbor.yml,接着使用文本编辑器打开并修改 hostname 为本地 ip 地址。如果说你不使用 https 进行访问(一般都是内网使用),那就将相关的配置都给注释掉。

然后打开命令行进入这个目录中,使用 docker 加载本地镜像

sh 复制代码
docker load -i harbor.v2.10.1.tar.gz

加载完成后我们检查一下已经成功加载了 Harbor 本地镜像了

使用 ./prepare 预处理一些文件,初始化文件

执行 install.sh 就正式开始安装了

相关推荐
小鑫记得努力7 分钟前
Java类和对象(下篇)
java
binishuaio11 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE13 分钟前
【Java SE】StringBuffer
java·开发语言
老友@13 分钟前
aspose如何获取PPT放映页“切换”的“持续时间”值
java·powerpoint·aspose
wclass-zhengge16 分钟前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇22 分钟前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
wrx繁星点点28 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
Upaaui31 分钟前
Aop+自定义注解实现数据字典映射
java
zzzgd81631 分钟前
easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头
java·excel·表格·easyexcel·导入导出
友善的鸡蛋32 分钟前
解决:使用EasyExcel导入Excel模板时出现数据导入不进去的问题
java·easyexcel·excel导入