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
就正式开始安装了