Docker之Harbor私服的搭建及使用

一、更新epel源并安装docker

#更新epel源
yum -y install epel-release

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#添加 Docker yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#安装docker-ce
yum -y install docker-ce

#启动docker
systemctl start docker

二、安装docker-compose

1、从官网直接下载二进制文件

#下载二进制文件
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose

#添加执行权限
chmod +x /usr/local/bin/docker-compose

#查看版本信息
docker-compose --version

2、采用python的包管理工具pip安装

#安装python-pip
yum install -y python-pip

#添加国内pip源
mkdir /root/.pip/
cat > /root/.pip/pip.config << END
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
timeout = 150

END


#安装docker-compose
pip install docker-compose

#查看版本信息
docker-compose --version

三、安装harbor

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry
也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、
镜像复制和中文支持等功能。

1、下载二进制包

#github地址
https://github.com/goharbor/harbor

#二进制软件包下载,这里选择release在线版本
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.4.tgz

2、修改harbor配置文件harbor.cfg

hostname = 192.168.49.131     #这里也可以写域名
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http

# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123

# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345

# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = adminonly

3、配置启动harbor

当前目录下执行./prepare,再执行./install.sh。
Harbor就回根据当前目录下的docker-compose.yml下载依赖的镜像
访问:http://192.168.49.131 用户名和密码:admin/Harbor12345

Docker之Harbor私服的搭建及使用_第1张图片
Docker之Harbor私服的搭建及使用_第2张图片

4、问题

docker login 192.168.49.131
Username: admin
Password: 
Error response from daemon: Get https://192.168.49.131/v2/: dial tcp 192.168.49.131:443: connect: connection refused

这是因为docker1.3.2版本开始默认docker registry使用的是https,我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。

四、Harbor配置TLS证书

1、修改harbor配置文件harbor.cfg

hostname = 192.168.49.131
ui_url_protocol = https
ssl_cert = /data/cert/ca.crt
ssl_cert_key = /data/cert/ca.key

2、创建自签名证书key文件

mkdir -p /data/cert/
openssl genrsa -out /data/cert/ca.key 2048 

3、创建自签名证书crt文件
注意命令中/CN=192.168.49.131字段中 192.168.49.131 修改为你自己的仓库域名。

openssl req -x509 -new -nodes -key /data/cert/ca.key -subj "/CN=192.168.49.131" -days 6000 -out /data/cert/ca.crt

4、开始安装Harbor

./install.sh

#出现以下内容正面配置成功
✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at https://192.168.49.131. 
For more details, please visit https://github.com/goharbor/harbor .

5、添加docker私有仓库配置,并重启docker
方式一:

#在harbor配置文件文件目录下执行,停止容器
docker-compose stop

#停止docker
systemctl stop docker

#增加私有仓库配置,这里把公有仓库地址改成了阿里云docker仓库地址
cat > /etc/docker/daemon.json << END
{"registry-mirrors": ["http://kfwkfulq.mirror.aliyuncs.com"],"insecure-registries":["https://192.168.49.131"]}
END

#启动docker
systemctl start docker

#在harbor配置文件文件目录下执行,启动容器
docker-compose up -d

方式二:

#在harbor配置文件文件目录下执行,停止容器
docker-compose stop

#停止docker
systemctl stop docker

#修改docker的启动文件,增加私有仓库配置
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registries=https://192.168.49.131

#启动docker
systemctl daemon-reload
systemctl start docker

#在harbor配置文件文件目录下执行,启动容器
docker-compose up -d

6、登陆

docker login 192.168.49.131
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

Docker之Harbor私服的搭建及使用_第3张图片
7、推送镜像到私有仓库

步骤:
#镜像打标签
docker tag 镜像名:标签 私服地址/仓库项目名/镜像名:标签

#推送到私服
docker push  私服地址/仓库项目名/镜像名:标签 

#从私服拉取镜像
docker pull 私服地址/仓库项目名/镜像名:标签

------------------------------
#示例
docker pull busybox
docker tag busybox:latest 192.168.49.131/library/busybox:latest
docker push 192.168.49.131/library/busybox:latest
docker pull 192.168.49.131/library/busybox:latest

8、图形化界面(客户端)访问
由于证书是我们自己生产的,所以需要我们提前将 /data/cert/ca.crt 文件上传到windows服务器(客户端),双击安装即可。
Docker之Harbor私服的搭建及使用_第4张图片

你可能感兴趣的:(虚拟化)