Docker仓库Harbor安装配置
Harbor是由 VMWare 公司开源的容器镜像仓库。Harbor功能包括:
- 镜像仓库权限控制
- 镜像远程同步复制
- 大规模镜像发布
- 镜像删除和空间回收
一、依赖环境安装
这里以centos7为例,依赖docker-ce、docker-compose(rust开发)工具,同时Harbor会对两者的版本有一些要求,这里为了便于安装,使用了docker-ce和epel源,方便直接安装好环境 。
1、docker-ce安装
1step 1:安装一些必要的系统工具
2yum install -y yum-utils device-mapper-persistent-data lvm2
3Step 2:添加docker镜像源
4yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5Step 3: 安装 Docker-CE
6yum -y install docker-ce
7Step 4: 开启Docker服务
8systemctl start docker.server
9systemctl enable docker.server
官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。特点版本的安装方式如下:
1Step 1: 查找Docker-CE的版本:
2 yum list docker-ce.x86_64 --showduplicates | sort -r
3Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
4 yum -y install docker-ce-[VERSION]
2、docker-compose安装
docker-compose的安装方式有两种,一种是从github上下载已经编译好的二进制包,一种是通过epel源,直接通过yum的方式安装
1方法一:
2curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
3chmod +x /usr/local/bin/docker-compose
4#查看版本
5docker-compose version
6方法二:
7wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
8yum -y install docker-compose
二、Harbor安装
1、修改配置
Harbor的安装分为离线安装和在线安装,这里建议使用离线安装方式,因为默认拉镜外镜像速度太慢了。下载地址https://github.com/goharbor/harbor/releases ,将offline包解压后,放到/opt/harbor 目录,修改harbor.yml.tmpl文件,这里给出部分配置:
1hostname: 192.168.159.132
2http:
3 port: 80
4https:
5 port: 443
6 certificate: /data/cert/192.168.159.132.crt
7 private_key: /data/cert/192.168.159.132.key
8harbor_admin_password: Harbor12345
9database:
10 password: root123
11 max_idle_conns: 50
12 max_open_conns: 1000
13data_volume: /data
比较关键的配置是hostname,建议使用域名方式,这里只是测试使用了IP地址,选择IP和域名后面生成key的步骤会有一些小的区别。再有就是数据存方目录和证书文件存方目录。
2、证书生成
证书生成可以使用openssl ,也可以使用cfssl 工具进行生成,这里以官方方法,使用openssl ,如下:
1生成CA证书私钥
2openssl genrsa -out ca.key 4096
3生成CA证书
4openssl req -sha512 -new \
5 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.159.132" \
6 -key 192.168.159.132.key \
7 -out 192.168.159.132.csr
8生成服务器私钥
9openssl genrsa -out 192.168.159.132.key 4096
10生成服务端CA证书
11openssl req -x509 -new -nodes -sha512 -days 3650 \
12 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.159.132" \
13 -key ca.key \
14 -out ca.crt
15生成x509 v3 扩展文件
16cat > v3.ext
17
18 这里步骤比较繁琐,如果使用域名,将上面的IP地址修改成域名就可以了,不过生成v3.ext这一步需要注意,如果是域名的话,对应的命令会是如下:
19
20
21```bash
22openssl x509 -req -sha512 -days 3650 \
23 -extfile v3.ext \
24 -CA ca.crt -CAkey ca.key -CAcreateserial \
25 -in yourdomain.com.csr \
26 -out yourdomain.com.crt
3、完成harbor的安装
进入解压的/opt/harbor目录,使用prepare进行环境检查(此步也可以跳过),使用install.sh文件运行安装,在离线安装下docker自动load harbor压缩包里的image镜像,如果是在线安装,这里会等待比较长时间会下载相关镜像。安装完成后,可以通过docker ps 或docker-compose ps查看已经启动的镜像信息。
1[root@localhost harbor]# docker-compose ps
2 Name Command State Ports
3--------------------------------------------------------------------------------------------------------
4harbor-core /harbor/entrypoint.sh Up
5harbor-db /docker-entrypoint.sh Up
6harbor-jobservice /harbor/entrypoint.sh Up
7harbor-log /bin/sh -c /usr/local/bin/ ... Up 127.0.0.1:1514->10514/tcp
8harbor-portal nginx -g daemon off; Up
9nginx nginx -g daemon off; Up 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
10redis redis-server /etc/redis.conf Up
11registry /home/harbor/entrypoint.sh Up
12registryctl /home/harbor/start.sh Up
此时在目录下也会生成docker-compose.yml文件,通过docker-compose可以很方便的进行服务启停,指令如下:
docker-compose down -v 或 docker-compose stop //区别,前者会remove掉容器、image、网络,停的更干净,后者只是停服务
docker-compose up -d
4、配置项目仓库
打开 https://192.168.159.132/ 登录,默认用户名密码 admin / Harbor12345 (在配置文件中修改过的,使用修改后的密码),登录后创建test项目仓库。
三、镜像推拉测试
使用docker login 192.168.159.132登录,使用的登录用户名密码是之前配置的用户名密码信息,如果已经登录过的,会在/root/.docker/config.json文件中记录,如下:
1[root@localhost ~]# more /root/.docker/config.json
2{
3 "auths": {
4 "192.168.159.132": {
5 "auth": "YWRtaW46SGFyYm9yMTIzNDU="
6 }
7 }
8}
直接base64可以解密出信息。
使用docker pull hello-world可以多外部源拉一个测试镜像到本地,并重新打tag到harbor仓库,后面就可以从该仓库拉文件了。
1远端拉镜像
2[root@localhost ~]# docker pull hello-world
3Using default tag: latest
4latest: Pulling from library/hello-world
5Digest: sha256:95ddb6c31407e84e91a986b004aee40975cb0bda14b5949f6faac5d2deadb4b9
6Status: Image is up to date for hello-world:latest
7docker.io/library/hello-world:latest
8重新打标签
9[root@localhost ~]# docker tag hello-world 192.168.159.132/361way/hello-world:latest
10[root@localhost ~]# docker image ls|grep hello-world
11hello-world latest bf756fb1ae65 13 months ago 13.3kB
12192.168.159.132/361way/hello-world latest bf756fb1ae65 13 months ago 13.3kB
13push到仓库
14[root@localhost ~]# docker push 192.168.159.132/361way/hello-world:latest
15The push refers to repository [192.168.159.132/361way/hello-world]
169c27e219663c: Layer already exists
17latest: digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 size: 525
完成后,可以测试从仓库里拉镜像测试
1[root@localhost ~]# docker rmi bf756fb1ae65 -f
2Untagged: 192.168.159.132/361way/hello-world:latest
3Untagged: 192.168.159.132/361way/hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
4Untagged: 192.168.159.132/test/hello-world:latest
5Untagged: 192.168.159.132/test/hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042
6Untagged: hello-world:latest
7Untagged: hello-world@sha256:95ddb6c31407e84e91a986b004aee40975cb0bda14b5949f6faac5d2deadb4b9
8Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
9[root@localhost ~]# docker run 192.168.159.132/361way/hello-world:latest
10[root@localhost ~]# docker image ls |grep hello-world
11192.168.159.132/361way/hello-world latest bf756fb1ae65 13 months ago 13.3kB
四、安装中的问题
在key文件配置不当的时候,会遇到如下错误:
1File "/usr/lib/python3.6/shutil.py", line 263, in copy2
2 copyfile(src, dst, follow_symlinks=follow_symlinks)
3 File "/usr/lib/python3.6/shutil.py", line 120, in copyfile
4 with open(src, 'rb') as fsrc:
5IsADirectoryError: [Errno 21] Is a directory: '/hostfs/data/cert'
解决方法就是把key文件重新配置即可。当然还会遇到其他问题,可以参考:https://goharbor.io/docs/2.1.0/install-config/troubleshoot-installation/
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/harbor-install/6511.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.