# Harbor教程 - 3 Docker使用Harbor镜像仓库
下面介绍一下 Docker 使用 Harbor 作为镜像仓库。
# 3.1 配置Docker镜像仓库
配置 Docker 使用的镜像仓库。在 Docker 所在的主机上进行配置:
如果之前配置了 Docker 镜像加速,那么应该已经有 /etc/docker/daemon.json
文件了。
如果之前没有任何操作,那么先创建目录:
sudo mkdir -p /etc/docker
编辑 /etc/docker/daemon.json
文件,添加 insecure-registries
配置:
{
"registry-mirrors": ["https://****.mirror.aliyuncs.com"],
"insecure-registries":["harbor.local"]
}
2
3
4
registry-mirrors
是我配置的阿里云镜像加速地址,如果不知道怎么获取的,可以查看 Docker 基础教程中的 Docker 安装 (opens new window) 。
insecure-registries
配置的是 Harbor 的地址,这里的 https://harbor.local
是 Harbor 所在主机地址。
我在 /etc/hosts
中配置了:
192.168.0.104 harbor.local
harbor.local
指向了 Harbor 所在的主机。
配置完成,重启一下 Docker :
sudo systemctl restart docker
# 3.2 新建远程仓库
首先需要在 Harbor 上新建一个远程仓库:
新建项目,填写名称,这里不是仓库名称,更像是命名空间,在这个项目下可以有多个镜像仓库,我这里起名叫 my-lib
。
选择 公开 的话,不用登录 Harbor 就可以拉取镜像。
项目配额限制,-1
表示不限制存储容量。
# 3.3 准备镜像
这里我下载一个 Ubuntu 镜像,在镜像中安装 net-tools
工具。
这样容器就具有了 ifconfig
命令功能,将这个容器导出为镜像,上传到 Harbor
。其他的主机可以就可以从 Harbor 下载具有自带 ifconfig
命令的 ubuntu 了。
# 拉取镜像
docker pull ubuntu
# 创建容器
docker run -it --name my-ubuntu ubuntu
# 容器内安装net-tools
apt update
apt install net-tools
# 退出容器,将容器保存为镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 镜像名:[版本标签]
# 例如
docker commit -m="我的Ubuntu" -a="逗比笔记" 97be95385779 my-ubuntu:1.0.0
2
3
4
5
6
7
8
9
10
11
12
13
14
现在镜像有了:
当然使用 Dockerfile 编写一个镜像也是可以的,我这里是为了方便,不过重点不在如何生成镜像。
# 3.4 给镜像打上标签
首先给镜像打上标签
命令:
# 命令
docker tag 本地镜像ID Host:Port/远程仓库名称:[版本tag]
# 例如
docker tag 461fd46a3fb9 harbor.local/my-lib/my-ubuntu:1.0.0
2
3
4
5
当给一个已有的镜像打上新的标签时,Docker 会复制该镜像并创建一个新的镜像,带有新的标签。待会推送到远程仓库的是新生成的镜像。这两个镜像是一样的,ID都一样。
# 3.5 推送镜像到远程仓库
# 1 登录Harbor
首先需要先登录到 Harbor:
docker login harbor.local
根据提示输入用户名和密码:
# 2 将镜像推送到远程仓库
命令:
# 命令
docker push 镜像名称:[版本tag]
# 例如
docker push harbor.local/my-lib/my-ubuntu:1.0.0
2
3
4
5
推送成功:
# 3.6 查看镜像
在 Harbor 上可以查看到上传的镜像。
# 3.7 给镜像添加latest标签
我们还可以在 Harbor 页面给上传的镜像的版本添加标签,例如我下面给添加了一个latest标签。
这样在拉取镜像的时候,不指定标签就可以拉取这个 latest
标签的镜像。
当然了如果不添加,通过 1.0.0
的 tag
拉取也是可以的。
# 3.8 拉取镜像
如果在其他的机器上拉取,首先需要登录,因为仓库是非公共的。
docker login harbor.local
登录后就可以拉取镜像了。
因为在上面已经添加了 latest
标签,所以可以不指定标签直接拉取镜像。
# 从Harbor拉取刚才上传的镜像
docker pull harbor.local/my-lib/my-ubuntu
2
my-lib
是 Harbor 中的项目,my-ubuntu
是对应的镜像。
← 02-Harbor安装 99-遇到的错误 →