docker 搭建私人仓库有下面几种方式:
- 1、docker hub 官方私人镜像仓库
- 2、本地私有仓库
官方私人镜像仓库搭建很简单(就是需要有魔法,否则就异步到第二种方法吧),只需要 login、pull、tag、push 几种命令就完事了。而本地私人镜像仓库则比较麻烦一点而且只能存储在本地不能公开。
下面我们就来简单的介绍一下怎么搭建自己的私人仓库吧!
官方镜像仓库
首先,我们需要在 docker hub 这里申请注册一个账号并登录,同时也要在 Docker Desktop 中进行登录。完成登录以后,我们首先在命令行中使用命令进行登录
docker login
出现 Login Succeeded 就代表登录成功了!
注:你的身份验证凭证将被存储在本地目录的 .dockercfg 文件中
接着我们查看一下本地镜像,可以看到这里有一个 nginx
,待会儿就拿这个进行测试吧!
docker images
首先对镜像打上 tag
,也就是重命名。
注:重命名格式需要 用户名/镜像名:版本号
docker tag nginx codegetters/nginx:1.0.0
检查一下看看是否成功打上了 tag
到了这里我们就完成了大部分的工作了,只需要 push
到自己的账号中就好了。
注:push 的镜像名要写全包括最后的版本号,否则就会失败
docker push codegetters/nginx:1.0.0
完成以后我们就可以删除本地镜像了,不过删除不是我们的重点就不过多展示了。我们接着进入 docker hub 并登录自己的账号。点击 Repositories 就可以看到我们的仓库中已经有了 nginx
了
到了这里我们就算完成了,如果想要从自己的仓库中拉下来就执行下面的命令即可
docker pull codegetters/nginx:1.0.0
本地私有仓库
为什么使用私用仓库?
公司的项目一般不予许我们上传到 Docker Hub 这类的公共仓库中,所有学会创建一个私有仓库也是非常必要的。虽然 hub.docker 上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案。
官方提供了 docker hub 来作为一个公开的集中仓库。然而,本地访问 Docker Hub 速度往往很慢,并且很多时候需要一个本地的私有仓库只供网内使用。
registry 就是管理 docker 镜像的服务。接下来的操作也是主要使用 registry 这个镜像进行,
首先我们先拉取 registry
镜像
docker pull registry
接着让 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
运行成功后可以访问 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 并检查一下
注:重命名格式需要 用户名/镜像名:版本号
docker tag nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0
docker images
完成 tag
后就将镜像推送到我们的本地仓库了
注:push 的镜像名要写全包括最后的版本号,否则就会失败
docker push xxx.xxx.xxx.xxx:5000/nginx:1.0.0
这个时候我们访问刚才的页面,就显示了刚才推送的镜像-nginx
当然,我们也可以使用命令也可以进行查看是否成功推送
curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog
也可以使用这个命令来访问本地仓库的 tag
列表
curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog | python -m json.tool
我们来运行一下 registry
中的镜像看看是否运行能够运行成功。这里我是将本地的 80
端口映射到 nginx 中的 80
端口了
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
进行访问(一般都是内网使用),那就将相关的配置都给注释掉。只注释关于 https 的内容就好了,其他内容最好不要动。
然后打开命令行进入这个目录中,使用 docker 加载本地镜像
docker load -i harbor.v2.10.1.tar.gz
加载完成后我们检查一下已经成功加载了 Harbor 本地镜像了
使用 ./prepare
预处理一些文件,初始化文件
接下来执行 install.sh
就正式开始安装了
如果出现 Harbor has been installed and started successfully 表示安装成功,我们查看一下 docker 进程