
Pré-requis: docker, // docker-compose et python3-setuptools doivent-être installés
https://github.com/goharbor/harbor/releases
# The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. hostname: mon.registre.info # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 8080 # https related config # Placer en commentaire le bloc suivant #https: # https port for harbor, default is 443 # port: 443 # The path of cert and key files for nginx # certificate: /data/mon.registre.info.crt # private_key: /data/mon.registre.info.key
# ajouter à l'adresse IP de votre serveur 192.168.2.100 months.registre.info
# Par défaut, docker utilise un connexion sécurisée pour les requêtes vers les registres. # Le registre installé à l'étape précédente l'a été en mode non sécurisé. # Par exemple: docker pull mon.registre.info:8080/library/hello-world:v1 # Produit l'erreur suivante: # Error response from daemon: failed to resolve reference "mon.registre.info:8080/library/hello-world:v1": failed to do request: Head # "https://mon.registre.info:8080/v2/library/hello-world/manifests/v1": http: server gave HTTP response to HTTPS client # Remarquer que l'URL utilise https comme préfix: "https://mon.registre.info:8080/v2/library" # Pour corriger cela, il faudra donc enregistrer une exception au niveau de Docker # en ajoutant la paire suivante: "insecure-registries": ["mon.registre.info:8080"]
Soit, via le UI de docker.desktop:

Soit, via le fichier de configuration de docker:
# Ou bien ceci, si docker-desktop n'est pas installée:
$ sudo nano /etc/docker/daemon.json
{
"insecure-registries": ["mon.registre.420:80"]
}
$ sudo systemctl restart docker
$ docker info
#--------------------------
Insecure Registries:
mon.registre.info:8080
::1/128
127.0.0.0/8
# Renseigner le fichier hosts du poste de travail pour y ajouter mon.registre.info docker login -u admin mon.registre.info:8080 # NOTE: Si l'API du registre répond sur un autre port que 443 alors il faut inscrire le port dans le 'tag' docker tag hello-world:latest mon.registre.info:8080/library/hello-world:v1 docker tag hello-world:latest mon.registre.info:80/library/hello-world:v1 docker push mon.registre.info:8080/library/hello-world:v1 docker pull mon.registre.info:8080/library/hello-world:v1 docker tag alainboudreault/superminou mon.registre.info:8080/library/superminou:latest docker push mon.registre.info:8080/library/superminou:latest
# 1 -
openssl genrsa -out ca.key 4096
# 2 -
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Quebec/L=Quebec/O=example/OU=Personal/CN=mon.registre.info" \
-key ca.key \
-out ca.crt
openssl genrsa -out mon.registre.info.key 4096
# 3 -
openssl req -sha512 -new \
-subj "/C=CN/ST=Quebec/L=Quebec/O=example/OU=Personal/CN=mon.registre.info" \
-key mon.registre.info.key \
-out mon.registre.info.csr
# 4 -
cat > v3.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=mon.registre.info
DNS.2=mon.registre.info
DNS.3=mon.registre.info
EOF
# 5 -
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in mon.registre.info.csr \
-out mon.registre.info.crt
# 6 -
sudo cp mon.registre.info.crt /data/cert/
sudo cp mon.registre.info.key /data/cert/
# 7 -
openssl x509 -inform PEM -in mon.registre.info.crt -out mon.registre.info.cert
# 8 -
mkdir /etc/docker/certs.d/mon.registre.info/
sudo cp mon.registre.info.cert /etc/docker/certs.d/mon.registre.info/
sudo cp mon.registre.info.key /etc/docker/certs.d/mon.registre.info/
sudo cp ca.crt /etc/docker/certs.d/mon.registre.info/
sudo cp ca.crt /usr/local/share/ca-certificates/
# Note: Pour windows, copier le fichier C:\ProgramData\docker\certs.d\mon.registre.info\ca.crt
sudo update-ca-certificates
sudo systemctl restart docker
// ==============================================================
alain@U2:~/harbor$ docker login mon.registre.info
Username: admin
Password: Harbor12345
WARNING! Your credentials are stored unencrypted in '/home/alain/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/
Login Succeeded
docker tag hello-world:latest mon.registre.info/library/hello-world:v1
docker push mon.registre.info/library/hello-world:v1