Stockage de containers - Harbor
1. Informations
1.1. harbor1.home.lab
| Caractéristiques | |
|---|---|
| RAM | 2 Go |
| CPU | 2 coeurs |
| Disque | 60 Go |
| IP admin | 192.168.50.13 |
2. Documentations
- https://goharbor.io/docs/1.10/install-config/download-installer/
- https://github.com/geerlingguy/ansible-role-docker/blob/master/tasks/main.yml
3. Installation de docker-ce
$ sudo yum remove docker docker-common docker-selinux docker-engine
$ sudo yum -y install yum-utils device-mapper-persistent-data lvm2 container-selinux
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo systemctl enable --now docker
$ sudo usermod -aG docker $USER
$ sudo systemctl status docker
4. Configuration de Firewalld
sudo firewall-cmd --permanent --port=443/tcp
sudo firewall-cmd --reload
5. Installation de harbor
$ wget https://github.com/goharbor/harbor/releases/download/v2.13.0/harbor-offline-installer-v2.13.0.tgz
$ tar xvzf installer-v2.13.0.tgz
$ sudo mv harbor /opt/harbor
$ cd /opt/harbor
6. Génération de certificat
6.1. Générer un certificat
$ sudo ipa-getcert request \
-f /etc/pki/tls/certs/harbor1.home.lab.pem \
-k /etc/pki/tls/private/harbor1.home.lab.key \
-K host/harbor1.home.lab \
-N "CN=harbor1.home.lab" \
-D harbor1.home.lab \
-D harbor1
6.2. Changer les permissions du certificat et clé privée
$ sudo chmod a+r /etc/pki/tls/certs/harbor1.home.lab.pem
6.3. Copier le certificat de l'Autorité de Certifiaction
sudo cp /etc/pki/ca-trust/source/anchors/ca-homelab.pem /opt/harbor/common/shared/trust-certificates
6.4. Copier le certificat du serveur LDAP
$ chmod a+r ipa1.home.lab
$ sudo mv ipa1.home.lab /opt/harbor/common/shared/trust-certificates
7. Configuration de Harbor
- Créer le fichier
harbor.yml
$ cd /opt/harbor
$ cp harbor.yml.tmpl harbor.yml
- Modifier le fichier
harbor.yml
hostname: harbor1.home.lab
http:
port: 80
https:
port: 443
certificate: /etc/pki/tls/certs/harbor1.home.lab.pem
private_key: /etc/pki/tls/private/harbor1.home.lab.key
harbor_admin_password: $PASSWORD_ADMIN
database:
password: $PASSWORD_DB
ca_bundle: /etc/pki/ca-trust/source/anchors/ca-homelab.pem
- Préparer l'installation
$ sudo ./prepare --with-trivy
- Lancer l'installation
$ sudo ./install.sh
8. Authentification LDAP
8.1. Ajouter le serveur LDAP
- Aller dans le menu Administration > Configuration et choisir l'onglet Authentication

9. Administration de Harbor
9.1. Arrêter Harbor
$ cd /opt/harbor
$ sudo docker compose down -v
9.2. Démarrer Harbor
$ cd /opt/harbor
$ sudo docker compose up -d
9.3. Reconfigurer Harbor
$ cd /opt/harbor
$ sudo docker compose down -v
$ sudo ./prepare --with-notary --with-clair --with-chartmuseum
$ sudo docker compose up -d
9.4. Mettre à jour le certificat du serveur LDAP
-
Récupérer le certificat du serveur LDAP
-
Copier le certificat du serveur LDAP
$ chmod a+r ipa1.home.lab
$ sudo mv ipa1.home.lab /opt/harbor/common/shared/trust-certificates
- Redémarrer Harbor
$ cd /opt/harbor
$ sudo docker compose down -v
$ sudo docker compose up -d
10. Création d'un registre privé
- #todo à compléter
11. Utilisation du registre privé harbor
$ docker pull dockurr/windows
$ docker tag dockurr/windows harbor1.home.lab/dockurr/windows:latest
$ docker login
Username: tz
Password: $PASSWORD
$ docker push harbor1.home.lab/dockurr/windows:latest
11.1. Téléverser une image
$ docker login harbor1.home.lab
Username: admin
Password: $PASSWORD_ADMIN
docker pull nginx:alpine
docker tag nginx:alpine harbor1.home.lab/private/mynginx:alpine
docker push harbor1.home.lab/private/mynginx:alpine
docker images
docker rmi -f <image_name_or_id>
11.2. Télécharger une image
docker login harbor1.home.lab
docker pull harbor1.home.lab/private/mynginx:alpine
docker run -it --rm -d -p 80:80 --name web harbor1.home.lab/private/mynginx:alpine
12. Création de règle de réplication
12.1. Créer un nouveau registre

12.2. Créer une nouvelle règle de réplication
è https://harbor1.home.lab/harbor/replications
-
Pour une réplication manuelle

-
Sinon pour une réplication planifiée (tous les jours à minuit)

13. Durcissement
- #todo à compléter
14. Configuration du chiffrement TLS entre les composants
15. Démarrage des containers au boot
$ docker update --restart unless-stopped $(docker ps -q)
- Créer le fichier
/etc/systemd/system/harbor.service
/etc/systemd/system/harbor.service
# /etc/systemd/system/harbor.service
[Unit]
Description=Start Harbor via Docker Compose
Requires=docker.service
After=network-online.target docker.service
[Service]
WorkingDirectory=/opt/harbor
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
Restart=always
TimeoutStartSec=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- Activer le service au démarrage
$ sudo systemctl daemon-reexec
$ sudo systemctl enable harbor