目录
3.2 在/etc/docker/daemon.json添加私库地址
5.3、从库需要添加Https证书,并重新编排Harbor容器
一、Docker及组件安装
1、docker
Index of /docker-ce/linux/centos/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
升级:
#升级需要先卸载,再重新安装。升级完记得手动启动一下docker。
rpm -qa|grep docker
yum remove ...
systemctl start docker
2、docker-compose安装
下载:
官网:https://github.com/docker/compose/releases
百度云:链接:https://pan.baidu.com/s/1QTsyihDXAOC1eV7WVRLzaw
提取码:1234
安装:
#将下载的文件移动并重命名,放置PATH任意一个目录下,例/usr/local/bin
# 给docker compose 文件授权
sudo chmod +x /usr/local/bin/docker-compose
# 查看一下version,显示有版本号那就说明安装成功了
docker-compose version
二、镜像仓库搭建(harbor)及使用
Harbor是由VMware
公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
1、环境要求
docker:
可从各国内镜像站获取docker安装包。如下,以centos7.9系统为例:
docker-compose:
官网: https://github.com/docker/compose/releases
openssl:
harbor安装包:
官方地址:https://github.com/goharbor/harbor/releases
百度云: 链接:https://pan.baidu.com/s/1KIkq85XQjGXoYCdj4gMOwg
提取码:1234
项目地址:(包含安装指导)
2、harbor安装
2.1、下载解压
#
tar -xvf harbor-offline-installer-v2.4.1.tgz -C /usr/loacl
cd /usr/local/harbor
2.2、修改配置
配置文件是harbor.yml,如果没有就将harbor.yml.tmpl复制并重命名一份。
修改其中的hostname、port、证书路径等。
若不使用https,则注释相关配置。若要启用https,需要生成相应证书文件,并填写相应路径,如下。
hostname: myharbor1.com
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 8088# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /your/myharbor1.com.crt
private_key: /your/myharbor1.com.key
2.3、手动生成SSL证书
参考官网配置: Harbor docs | Configure HTTPS Access to Harbor
(若不启用https,可略过此步):
这里我以myharbor1.com域名为例,作为我第一台harbor镜像仓库的访问域名。
生成证书颁发机构证书:
2.3.1、生成CA证书私钥
openssl genrsa -out ca.key 4096
2.3.2、生成 CA 证书。
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=myharbor1.com" \
-key ca.key \
-out ca.crt
生成服务器证书:
2.3.3、生成私钥
openssl genrsa -out myharbor1.com.key 4096
2.3.4、生成证书签名请求 (CSR)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=myharbor1.com" \
-key myharbor1.com.key \
-out myharbor1.com.csr
2.3.5、生成 x509 v3 扩展文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=myharbor1.com
DNS.2=myharbor1
DNS.3=hostname
EOF
2.3.6、使用该v3.ext
文件为您的 Harbor 主机生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in myharbor1.com.csr \
-out myharbor1.com.crt
向 Harbor或docker主机提供证书:
2.3.7、将证书放入/etc/docker/certs.d/myharbor1.com目录下(手动创建相关目录)。重启docker。
2.4、准备安装包
./prepare
docker-compose up –d
2.5、安装harbor
./install.sh
![](https://img-blog.csdnimg.cn/bc3e49ec8a49450db9f9a3aaea3fba91.png)
注意:可能会提示docker版本过低,需要升级docker版本
2.6、浏览器访问
由于我的域名是个人使用的,用域名访问需要先配置hosts绑定(最好是设置内部DNS解析,不然麻烦很多)。
192.168.118.192 myharbor1.com
默认账号和密码是admin和Harbor12345,配置文件中有写。可使用ip或域名访问(如果有设置域名的话)。
2.7、harbor服务
harbor相关的服务容器有9个,请确认是否都启动了。若检查有相关容器未启动,可手动启动(docker start container_id)
3、推送镜像
3.1 新建项目
假设我这里的项目叫“future”
推送命令提示:
3.2 在/etc/docker/daemon.json添加私库地址
docker默认使用https,如果要使用http,则需要修改/etc/docker/daemon.json文件(若没有该文件则新建)。因此在登录harbor之前需要在/etc/docker/daemon.json添加私库地址。
{
"insecure-registries": [
"myharbor1.com"
]
}
注意:如果使用私网域名,请提前在/etc/hosts文件中添加映射,或者在内网DNS中添加解析。
3.3、登录并推送镜像
#登录并输入账号
docker login myharbor1.com
注意:这里的域名要和配置文件里的一样。若登录报错,查看下面补充注意事项说明。
#制作镜像
docker tag [images]:[tag] [harbor ip]:[port]/[library]/[images]:[tag]
例:docker tag memcached:latest myharbor1.com/future/memcached:latest
#推送镜像
例:docker push myharbor1.com/future/memcached
注意:
若登录docker login myharbor1.com报错如下:
Login did not succeed, error: Error response from daemon: Get "https://myharbor1.com/v2/": x509: certificate signed by unknown authority
安装了docker之后就有/etc/docker目录,其下面是daemon.json和key.json。需要在下面继续创建certs.d/<ip>或certs.d/<域名>,这个 ip或域名 即为证书创建过程中配置的,表示该证书仅能给该 ip或域名 使用,然后将应用证书、应用私钥、CA证书放置到该目录下,并且应用证书和应用私钥要求名称为ip.cert和ip.key(目录和文件名为证书配置的 ip或域名,这个是固定格式,否则在docker访问的时候会解析不到文件)
这里需要将证书放入/etc/docker/certs.d/myharbor1.com目录下(手动创建相关目录)。重启并重新登录即可。
5、镜像仓库同步
我这里配置了两台harbor镜像仓库服务器,分别是myharbor1.com和myharbor2.com。为了方便,我配置了内部DNS解析服务。现在要让myharbor1.com作为总部的镜像仓库(即主库),让myharbor2.com作为分部的镜像仓库(即从库),因此myharbor2.com仓库需要从总部那边同步镜像到本地。配置如下:
5.1、添加同步仓库(从库)
“仓库管理”
5.2、设置同步任务(从库)
“ 复制管理”
5.3、从库需要添加Https证书,并重新编排Harbor容器
在myharbor2.com主机上,将myharbor1.com的https证书放入/etc/docker/certs.d/myharbor1.com目录下(手动创建相关目录)。重新编排启动。
5.4、同步仓库镜像
选中任务==》复制==》观察同步状态
补充:Harbor的数据(镜像,账号等)是保留在/data目录下的,因此重新编排或者安装是不会丢失数据的。