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

Docker之Harbor私服的搭建及使用

程序员文章站 2024-03-07 19:40:33
...

一、更新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私服的搭建及使用
Docker之Harbor私服的搭建及使用

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私服的搭建及使用
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私服的搭建及使用