基于 Harbor 搭建 Docker 私有镜像仓库

安装

docker

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
systemctl enable docker && systemctl start docker

镜像加速,配置国内镜像源,可以解决大部分拉取镜像失败问题

cat > /etc/docker/daemon.json << \EOF
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}
EOF

docker compose

# 这里的 [x.x.x] 替换成 github releases 的对应版本
$ sudo curl -L https://github.com/docker/compose/releases/download/[x.x.x]/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 国内用户可以使用以下方式加快下载
$ sudo curl -L https://download.fastgit.org/docker/compose/releases/download/[x.x.x]/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

生成证书(可选)

当使用 https 访问时需要配置证书。

省略。。。

harbor

下载离线安装包

yum install -y wget

# 这里的 [x.x.x] 替换成 github releases 的对应版本
wget https://github.com/goharbor/harbor/releases/download/v[x.x.x]/harbor-offline-installer-v[x.x.x].tgz

tar -zxvf harbor-offline-installer-v[x.x.x].tgz

修改 harbor.yml 配置文件

cd harbor

cp harbor.yml.tmpl harbor.yml

vi harbor.yml

harbor.yml 具体修改内容,这里默认使用 http 没使用 https。

diff harbor.yml.tmpl harbor.yml

# 修改 hostname 为 Harbor 私有仓库主机的 IP 地址,在我的 Harbor 虚拟机中 IP 地址为 10.121.218.174
< hostname: reg.mydomain.com
---
> hostname: 10.121.218.174

# 修改 Harbor web 端口为 8090
<   port: 80
---
>   port: 8090

# 将 https 相关配置注释掉
< 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
---
> #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

# harbor_admin_password 字段设置管理员账户 admin 的密码
harbor_admin_password: Harbor12345

安装 harbor

./prepare

./install.sh

重新安装:当修改 harbor.yml 后,我们需要执行 ./prepare,让配置能够得到更新。当然,历史存在的容器 container 也需要清理,除了使用 docker rm 进行清理外,还可以使用 docker system prune 进行清理。

使用

web 访问

在浏览器上输入 10.121.218.174:8090 访问 Harbor 的 web UI 登录界面

账户:admin,密码:Harbor12345

其他机器使用该仓库

由于使用的是 http 方式,需要添加私有仓库地址和端口到 docker 仓库可信队列

cat > /etc/docker/daemon.json << \EOF
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "insecure-registries": ["10.121.218.174:8090"]
}
EOF

使用 admin 账户登录私有仓库

docker login 10.121.218.174:8090 -u admin -p Harbor12345

从公共库拉取 busybox:latest 镜像,打包成新镜像(格式 ip:port/project/image),推送到私有仓库

docker pull busybox

docker tag busybox:latest 10.121.218.174:8090/library/busybox:latest

docker push 10.121.218.174:8090/library/busybox:latest

推送成功后就可以在 Harbor 的 web 界面上看到在 library 项目下新增了一个镜像

上一篇:harbor仓库复制同步


下一篇:企业实战(6)修改Harbor镜像仓库默认存储路径