什么是仓库
仓库(Repository)是存储和分发 Docker 镜像的地方。镜像仓库类似于代码仓库,Docker Hub 的命名来自 GitHub,Github 是我们常用的代码存储和分发的地方。同样 Docker Hub 是用来提供 Docker 镜像存储和分发的地方。
谈到镜像仓库,有两个需要区分的概念
- 注册服务器 docker.hub
- 仓库(具体的项目,类似目录,目录可以同时管理多个镜像) --jenkins/jenkins
Docker 镜像发布到公共仓库步骤
- 注册 Docker Hub 账号 (https://hub.docker.com)
- 创建仓库,新建一个仓库用于推送镜像。
创建仓库的时候右边会有上传到仓库的相关命令的提示,可以参考记录一下
- 本地docker login
- 本地docker tag
给本地镜像打个tag标签。标记本地镜像,将其归入某一仓库。
相当于重新复制镜像并重命名为docker账户名/仓库名称。这个命令其实就是在我们前面创建仓库的时候给的提示的代码。
- docker push
用registry搭建私有化镜像仓库
1.运行registry容器
启动命令:
docker run -v /var/lib/registry/data:/var/lib/registry -d -p 5000:5000 --name registry registry:2.7
意味着本地访问通过 http://120.25.253.110:5000
- docker tag
示例
docker tag hello-world:latest 120.25.253.110:5000/hello_world
- docker push
docker push 120.25.253.110:5000/hello_world
用Harbor搭建私有化镜像仓库
- 下载安装包,wget https://github.com/goharbor/harbor/releases/download/v2.1.4/harbor-online-installer-v2.1.4.tgz
- 解压,tar -zxvf harbor-online-installer-v2.1.4.tgz
- docker compose 安装
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
$ sudo curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 1.24.1。
将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
$ docker-compose --version
cker-compose version 1.24.1, build 4667896b
- 改配置,修改harbor.yml.tmpl文件名,改为harbor.yml,vi harbor.ym 更改host 和ssl 等
- 域名相关
如果遇到报错:ERROR:root:Please specify hostname, 那原因是启动harbor时没有修改harbor.yml里的内容。
解决办法
把配置文件中默认的hostname: reg.mydomain.com, 改为本地的ip。
比如: hostname:10.6.119.106- 认证证书相关
如果遇到报错:ERROR:root:Error: The protocol is https but attribute ssl_cert is not set。 原因是harbor.yml中默认是配置https的端口及证书路径的。
解决办法
是把这些配置都注释掉。
#https related config
#https: # 注释掉
##https port for harbor, default is 443
#port: 443 # 注释掉
##The path of cert and key files for nginx
#certificate: /your/certificate/path # 注释掉
#private_key: /your/private/key/path # 注释掉
- 执行.prepare命令,更新配置文件
- 启动Harbor,当修改完配置文件后,执行./install.sh
- 登录&使用
初始的默认用户是admin,密码是Harbor12345,登录成功:
推送镜像到harbor上
- 登录Harbor仓库:
docker login 120.25.253.110
可能遇到错误
可以修改本机Host的/etc/docker/daemon.json,如果没有这个文件,就创建它,并在里面"insecure-registries"的值追加"120.25.253.110",文件内容如下List-3.1所示,最重要的是"insecure-registries":[“120.25.253.110”],不然我们login或者推送镜像到120.25.253.110上时会报错。
{“bip”: “172.172.172.1/24”,“insecure-registries”: [“10.221.128.52”,“120.25.253.110”]}
- 标记要推送的镜像:
docker tag nginx:latest 120.25.253.110/dapengtest/nginx:1.0
如下图根据harbor的项目推送提示,标记本地镜像
3. 推送标记的镜像:
docker push 120.25.253.110/dapengtest/nginx:1.0
harbor仓库查看已经推送过来