欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kubernets基础组件 - Harbor 构建企业级Docker镜像仓库

程序员文章站 2022-04-25 15:17:04
...

Harbor 构建企业级Docker镜像仓库

1. 环境

[root@config1v etc]# free -mh
              total        used        free      shared  buff/cache   available
Mem:           7.6G        743M        2.8G        2.8M        4.1G        6.6G
[root@config1v etc]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@config1v etc]# docker -v
Docker version 18.06.0-ce, build 0ffa825
[root@config1v etc]# docker-compose -v
docker-compose version 1.22.0, build f46880fe

2. 安装docker-compose + docker

安装docker

curl -fsSL https://get.docker.io | bash

安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

3. 安装Harbor仓库

从github上面下载
Harbor下载地址
Kubernets基础组件 - Harbor 构建企业级Docker镜像仓库

mkdir -p /application/harbor
tar zxvf harbor.tgz -C /application/harbor
cd harbor

可以看到Harbor的目录结构,关键的配置文件就只有:

[aaa@qq.com harbor]# ls -l docker-compose.yml harbor.cfg
-rw-r--r-- 1 root root 3580 Aug  3 22:49 docker-compose.yml
-rw-r--r-- 1 root root 6682 Aug  3 23:02 harbor.cfg

修改harbor.cfg文件配置,主要修改的地方只有几处

hostname =10.210.27.229  
harbor_admin_password = aaa@qq.com
  • hostname: 代表Harbor监听的地址,可以通过浏览器进行访问
  • harbor_admin_password: 初始化默认admin的登陆密码
    使用prepare生成配置文件
[root@t4v harbor]# ./prepare

使用docker-compose启动集群之前,先修改一下docker-compose的配置,Harbor默认是在80端口,因为服务器80端口被占用了。所以需要修改一下端口

proxy:
    image: vmware/nginx-photon:v1.5.1
    container_name: nginx
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      - 7780:80
      - 444:443

启动Harbor,解压的时候默认有一个安装脚本

[root@t4v harbor]# ./install.sh

查看Harbor的状态

[aaa@qq.com harbor]# docker-compose ps
       Name                     Command               State                     Ports
--------------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/start.sh                 Up
harbor-db            /usr/local/bin/docker-entr ...   Up      3306/tcp
harbor-jobservice    /harbor/start.sh                 Up
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp
harbor-ui            /harbor/start.sh                 Up
nginx                nginx -g daemon off;             Up      0.0.0.0:444->443/tcp, 0.0.0.0:7780->80/tcp
redis                docker-entrypoint.sh redis ...   Up      6379/tcp
registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp

可以通过IP+PORT的方式访问Harbor了
Kubernets基础组件 - Harbor 构建企业级Docker镜像仓库
登陆的用户默认是:admin
初始密码:harbor.cfg文件中定义的
如果需要调整配置文件,修改后,那么就需要执行一遍

docker-compose down
./prepare
docker-compose up -d 

4. 使用Harbor

4.1 上传下载镜像

配置dockerhttp,因为安装的时候,没有选择的HTTPS,所以需要配置

[root@t4v harbor]# echo { "insecure-registries":["10.210.27.229:7780"] }>>/etc/docker/daemon.json
[root@t4v harbor]# systemctl reload docker 

登陆harbor仓库,docker login

[root@t4v harbor]# docker login 10.210.27.229:7780
Username (admin): admin
Password:
Login Succeeded

在本地上传一个镜像,这里我们在本地的一个centos镜像上传到仓库中

[root@t4v harbor]# docker images|grep centos
centos                             latest              49f7960eb7e4        8 weeks ago         200MB
# 首先给镜像打tag,tag的格式是固定的  【仓库地址】【项目名】【镜像名:TAG】
[root@t4v harbor]# docker tag centos:latest 10.210.27.229:7780/taiwei/centos:latest
[root@t4v harbor]# docker images |grep centos
10.210.27.229:7780/taiwei/centos   latest              49f7960eb7e4        8 weeks ago         200MB
# 将镜像推送到Harbor上面
[root@t4v harbor]# docker push 10.210.27.229:7780/taiwei/centos
The push refers to repository [10.210.27.229:7780/taiwei/centos]
bcc97fbfc9e1: Mounted from taiwei/taiwei
latest: digest: sha256:eed5b251b615d1e70b10bcec578d64e8aa839d2785c2ffd5424e472818c42755 size: 529

在界面上可以查看
Kubernets基础组件 - Harbor 构建企业级Docker镜像仓库
确实上传到了Harbor仓库中了
在另外一台机器上面可以测试从Harbor下载我们上传的centos镜像

[aaa@qq.com etc]# docker login 10.210.27.229:7780
Username: admin
Password:
Login Succeeded

如果这里一样出现类似HTTP请求docker的问题,使用下面的方法解决

echo { "insecure-registries":["10.210.27.229:7780"] }>>/etc/docker/daemon.json
systemctl reload docker 

使用docker pull将镜像下载下来

[root@config1v etc]# docker pull 10.210.27.229:7780/taiwei/centos
[root@config1v etc]# docker images |grep centos
10.210.27.229:7780/taiwei/centos   latest              49f7960eb7e4        8 weeks ago         200MB

只是Harbor的简单使用,还没有考虑到Harbor的高可用,和HTTPS的使用,以及使用域名代替IP

相关标签: 容器