1、docker-compose-linux-x86_64下载
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
vim ~/.bashrc
# 在文件结尾加入
export PATH=/usr/local/bin:$PATH
source ~/.bashrc
docker-compose --version
2、harbor-offline-installer-v2.8.2.tgz下载下来
tar -zxvf harbor-offline-installer-v2.8.2.tgz
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
1 hostname: 改成电脑的ip地址
2 注释掉这里的内容
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
3 这里改成你的存储地址
# The default data volume
data_volume:
./install.sh
3 (可选)配置nginx是为了访问ip1就能访问到ip2
docker pull nginx:1.14.2
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream hub {
server 192.168.1.6:80; # 这个ip是ip1,这台nginx服务器的ip是ip2
}
server {
listen 80;
proxy_pass hub;
proxy_timeout 300s;
proxy_connect_timeout 5s;
}
}
vim restart.sh
docker stop harbornginx
docker rm harbornginx
docker run -itd --net=host --name harbornginx -v /home/admin/nginx/nginx.conf:/etc/nginx/nginx.conf nginx:1.14.2
4 配置 /etc/hosts
安装harbor的机器ip 你需要的域名,比如hub.example.com
所有机器的daemon.json要加上这句
“insecure-registries”: [“hub.example.com”],
systemctl restart docker
5 在网页中新建项目,比如test,然后新建用户,再点开项目–成员,把新建用户加上
docker login hub.example.com 把新建用户信息填入
2.安装 带https的harbor
1)安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
2)harbor
3) https
在harbor同级建一个certs文件夹(其实文件夹的位置不重要),把下面这个脚本放进去
gen_certs.sh
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.liu.com" \
-key ca.key \
-out ca.crt
openssl genrsa -out harbor.liu.com.key 4096
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.liu.com" \
-key harbor.liu.com.key \
-out harbor.liu.com.csr
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.liu.com
DNS.2=harbor.liu
DNS.3=hostname
EOF
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.liu.com.csr \
-out harbor.liu.com.crt
mkdir -p /data/cert/
cp harbor.liu.com.crt /data/cert/
cp harbor.liu.com.key /data/cert/
openssl x509 -inform PEM -in harbor.liu.com.crt -out harbor.liu.com.cert
mkdir -p /etc/docker/certs.d/harbor.liu.com/
cp harbor.liu.com.cert /etc/docker/certs.d/harbor.liu.com/
cp harbor.liu.com.key /etc/docker/certs.d/harbor.liu.com/
cp ca.crt /etc/docker/certs.d/harbor.liu.com/
systemctl restart docker
4) 进去harbor文件夹
修改 harbor.yml.tmpl
hostname: harbor.liu.com
certificate: /etc/docker/certs.d/harbor.liu.com/harbor.liu.com.cert
private_key: /etc/docker/certs.d/harbor.liu.com/harbor.liu.com.key
密码可以修改一下
cp harbor.yml.tmpl harbor.yml
然后就是 ./install.sh
5) 别的服务器要连这个harbor的私有项目
需要把/etc/docker/certs.d 文件夹拷贝到别的机器上才行
3、解决harbor不自启的问题
编写harbor.service(放置于/etc/systemd/system目录下)
[Unit]
# 这部分定义了服务的元数据和与其他服务的关系。
Description=harbor
# 这行提供了服务的简短描述,也就是 "harbor"。
After=docker.service systemd-networkd.service systemd-resolved.service
# 该服务将在列出的服务(docker、systemd-networkd 和 systemd-resolved)之后启动。
#Requires=docker.service
# 这意味着此服务需要 docker.service 运行。如果 docker.service 失败,这个服务也会被停止。当 Docker 停止时,Harbor 也会停止,但当 Docker 启动时,Harbor 不会自动启动。
BindsTo=docker.service
# 当 Docker 停止时,Harbor 会停止,但当 Docker 重新启动时,Harbor 也会重新启动。
Documentation=http://github.com/vmware/harbor
# 这是服务的文档URL,提供额外的信息或如何使用它的指导。
[Service]
# 这部分定义了服务启动和停止时要执行的命令以及其他服务参数。
Type=simple
# 服务类型是简单的,这意味着它的主进程会立即启动并不会后台运行。
Restart=on-failure
# 如果服务失败(即非正常退出),它会自动重新启动。
RestartSec=5
# 服务重新启动之间的延迟是5秒。
ExecStart=/usr/local/bin/docker-compose -f /home/Admin/harbor/docker-compose.yml up
# 当服务启动时,要执行的命令。这里它使用 Docker Compose 启动容器。
ExecStop=/usr/local/bin/docker-compose -f /home/Admin/harbor/docker-compose.yml down
# 当服务停止时,要执行的命令。这里它使用 Docker Compose 停止容器。
[Install]
# 这部分定义了如何 "安装" 这个服务,即如何使其在启动时自动启动。
WantedBy=multi-user.target
# 这意味着当系统达到 "multi-user" 运行级别时,这个服务应该被启动。在 systemd 中,这通常意味着系统已经完成了基本的启动过程。
systemctl start harbor.service
systemctl enable harbor.service
ceph做docker hub的存储
要使用 Ceph 为 Harbor 提供 300GB 的数据卷,您需要按照以下步骤进行配置。假设您的 Ceph 集群已经部署完成,并且您已经安装了 Ceph 命令行工具(如 ceph
和 rbd
)和 Docker。
前提条件
- 已部署的 Ceph 集群:确保您的 Ceph 集群已经正常运行。
- Ceph 客户端工具:在您要配置 Harbor 的机器上安装了 Ceph 客户端工具。
- Harbor 已安装:您已经在目标机器上安装了 Harbor。
- 权限配置:确保 Ceph 用户有足够的权限创建和使用RBD镜像。
步骤一:创建Ceph Pool
首先,创建一个新的 pool 用于存储 Harbor 的数据。如果已经有合适的 pool,可以跳过这一步。
ceph osd pool create harbor-pool 128 128
步骤二:创建RBD镜像
接下来,在创建的 pool 中创建一个 300GB 的 RBD 镜像。
rbd create harbor-pool/harbor-data --size 300G
步骤三:映射RBD镜像到本地
将创建的 RBD 镜像映射到本地系统,使其作为块设备使用。
rbd map harbor-pool/harbor-data
此命令会输出一个类似 /dev/rbd0
或 /dev/rbd/harbor-pool/harbor-data
的设备路径。
步骤四:格式化和挂载
-
格式化设备:
mkfs.ext4 /dev/rbd0
这里假设映射的设备路径是
/dev/rbd0
,请根据实际情况调整。 -
创建挂载点并挂载:
mkdir -p /mnt/harbor mount /dev/rbd0 /mnt/harbor
-
确保开机自动挂载:
编辑
/etc/fstab
文件,添加以下内容:/dev/rbd0 /mnt/harbor ext4 defaults,_netdev 0 0
步骤五:配置Harbor使用Ceph存储
编辑 Harbor 的配置文件(通常是 harbor.yml
或 docker-compose.yml
),将 data_volume
配置为使用挂载的 Ceph RBD。
-
在
harbor.yml
中配置:data_volume: /mnt/harbor
-
或者在
docker-compose.yml
中配置:volumes: harbor-data: external: name: /mnt/harbor