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

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

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

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

官方镜像仓库

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

docker login

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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker

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

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

docker images

docker desktop怎么查看本地docker仓库 查看docker仓库信息_容器_02


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

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

docker tag nginx codegetters/nginx:1.0.0

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_03


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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_04

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

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

docker push codegetters/nginx:1.0.0

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_05


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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_java_06


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

docker pull codegetters/nginx:1.0.0

本地私有仓库

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

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

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

首先我们先拉取 registry 镜像

docker pull registry

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_07


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

docker run -d -p 5000:5000 -v E:\software_cache\docker:/var/lib/registry --restart=always registry

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_08


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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_nginx_09

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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_10

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

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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_java_11

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

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

docker tag nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

docker images

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_12


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

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

docker push xxx.xxx.xxx.xxx:5000/nginx:1.0.0

docker desktop怎么查看本地docker仓库 查看docker仓库信息_容器_13

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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_java_14


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

curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_15

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

curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog | python -m json.tool

docker desktop怎么查看本地docker仓库 查看docker仓库信息_java_16

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

docker run -d -p 80:80 --name nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_17

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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_18

使用 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 进行访问(一般都是内网使用),那就将相关的配置都给注释掉。只注释关于 https 的内容就好了,其他内容最好不要动。

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_19

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

docker load -i harbor.v2.10.1.tar.gz

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_20


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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_nginx_21


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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_docker_22

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

docker desktop怎么查看本地docker仓库 查看docker仓库信息_Docker_23


如果出现 Harbor has been installed and started successfully 表示安装成功,我们查看一下 docker 进程