自建镜像参考harbor
官网地址 https://github.com/goharbor/harbor/releases
参考地址 https://www.cnblogs.com/tianzhendengni/p/14071523.html
安装Docker-compose
1、安装
yum install -y docker-compose
2、查看版本
docker-compose --version
下载
1、下载地址
https://github.com/goharbor/harbor/releases
2、解压
tar -zxf harbor-offline-installer-v2.4.1.tgz -C /usr/local/
配置
1、mkdir -p /data/certs
cd /data/certs
2、配置ssl
参考地址 https://zhuanlan.zhihu.com/p/234918875
root@eb7023:/data/certs>openssl genrsa -out ca.key 4096
http://harbor23.com这里是我harbor仓库的域名,即harbor配置文件中hostname的值,也可以写ip
root@eb7023:/data/certs>openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/CN=harbor23.com" -key ca.key -out ca.crt
root@eb7023:/data/certs>ll
total 8
-rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
-rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
创建私钥
root@eb7023:/data/certs>openssl genrsa -out server.key 4096
生成证书签名请求
root@eb7023:/data/certs>openssl req -new -sha512 -subj "/CN=harbor23.com" -key server.key -out server.csr
root@eb7023:/data/certs>ll
total 16
-rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
-rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
-rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
-rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
生成harbor仓库主机的证书
root@eb7023:/data/certs>
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor23.com
EOF
root@eb7023:/data/certs>
root@eb7023:/data/certs>ll
total 20
-rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
-rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
-rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
-rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
-rw-r--r-- 1 root root 231 Sep 11 14:48 v3.ext
生成harbor仓库主机的证书
root@eb7023:/data/certs>openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
Signature ok
subject=/CN=harbor23.com
Getting CA Private Key
root@eb7023:/data/certs>ll
total 28
-rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
-rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
-rw-r--r-- 1 root root 17 Sep 11 14:48 ca.srl
-rw-r--r-- 1 root root 1830 Sep 11 14:48 server.crt
-rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
-rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
-rw-r--r-- 1 root root 231 Sep 11 14:48 v3.ext
到目前为止所有需要的证书文件就生成完毕了,下面需要一些配置
下面要修改harbor的配置文件 修改以下配置项
cd /usr/local/harbor/
mv /usr/local/harbor/harbor.yml.tmpl harbor.yml
root@eb7023:/data/certs>vim /usr/local/harbor/harbor.yml
hostname: harbor23.com
https:
port: 443
certificate: /data/certs/server.crt
private_key: /data/certs/server.key
TODO 接下来就可重启以下harbor仓库了,注意这里要CD到harbor解压目录
#导入配置
./prepare
#安装
./install.sh
##停止当前运行的harbor
docker-compose down -v
##后台运行的harbor
docker-compose up -d
为docker配置harbor认证
将server证书cp到docker所在的机器固定目录中
#笔者这里的certs.d是已经存在的,如果不存在需要mkdir
mkdir -p /etc/docker/certs.d/harbor23.com
root@eb7023:/data/certs>ll
total 28
-rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
-rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
-rw-r--r-- 1 root root 17 Sep 11 14:48 ca.srl
-rw-r--r-- 1 root root 1830 Sep 11 14:48 server.crt
-rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
-rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
-rw-r--r-- 1 root root 231 Sep 11 14:48 v3.ext
root@eb7023:/data/certs>cp server.crt /etc/docker/certs.d/harbor23.com/server.crt
这里我的docker和harbor是在同一台机器上的,如果是其他机器也复制crt文件即可
root@eb7023:/data/certs>scp server.crt root@eb7045:/etc/docker/certs.d/harbor23.com/server.crt
root@eb7045's password:
server.crt 100% 1830 2.1MB/s 00:00
如果是windows的话 C:\ProgramData\Docker\certs.d\harbor23.com 目录下放server.crt
3 #重新查看证书过期日期(这次是十年)
root@harbor:/data/harbor/certs# openssl x509 -in /data/harbor/certs/ca.crt -noout -dates
4、需改/etc/hosts 将ip和域名添加起来(可能需要)
3、安装
cd /usr/local/harbor/
./install.sh
✔ ----Harbor has been installed and started successfully.---- (出现代表成功)
启动查看
必须保证docker-compose启动,不然可能出现 harbor 核心服务不可用
cd /usr/local/harbor
1、查看
docker-compose ps
2、启动关闭
docker-compose start
docker-compose stop
3、编写开机启动
echo "docker-compose start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
nginx扩展
可以加nginx反代
cat /etc/nginx/conf.d/harbor.conf
server {
listen 80;
server_name harbor.od.com;
# 避免出现上传失败的情况
client_max_body_size 1000m;
location / {
proxy_pass http://127.0.0.1:180; #180是harbor的端口号
}
}
测试harbor
1、配置docker(那个docker的服务器有就在那个里加)
不加下面配置报错(Get "https://harbor23.com/v2/": dial tcp 192.168.0.2:443: connect: connection refused)
cat /etc/docker/daemon.json
{
"insecure-registries":["harbor23.com"]
}
systemctl daemon-reload
systemctl restart docker
2、先拉取一个nginx
docker pull nginx
3、加标签
docker tag nginx:latest harbor23.com/public/nginx:skv1 (标签是域名+项目名+镜像版本)
4、登录
docker login -u admin http://harbor23.com 输入密码
5、推送
docker push harbor23.com/public/nginx:skv1
6、拉取
docker pull harbor23.com/public/nginx:skv1
7、推出登录
docker logout
外网访问
修改harbor所在的服务器docker配置
1、修改docker配置
vi /lib/systemd/system/docker.service
找到包含ExecStart的这行,添加如下内容:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2375端口为docker远程服务端口,包含了docker可视化工具portainer,以及远程上传镜像的功能。
2、vi /etc/docker/daemon.json 上面已经做了
# 添加harbor镜像地址
{
"insecure-registries": ["172.28.152.101"]
}
windows idea 访问 详情参考 https://blog.csdn.net/An1090239782/article/details/111316025
1、安装docker destop
2、如果是windows的话 C:\ProgramData\Docker\certs.d\harbor23.com 目录下放server.crt证书
3、修改C:\Windows\System32\drivers\etc\hosts 指向harbor23.com域名
4、配置docker destop setting 修改 docker engine 配置增加
"insecure-registries": [
"harbor23.com"
],