1. Harbor ์ค์น
https://github.com/goharbor/harbor
์ํ๋ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ํ์ผ์ ๋งํฌ๋ฅผ ๋ณต์ฌํ๋ค.
๋ฆด๋ฆฌ์ฆ๋ฅผ ๋๋ฅด๋ฉด ์ฌ๋ฌ ๋ฐฐํฌ ๋ฒ์ ์ ๋ณผ ์ ์๋ค. ๊ทธ์ค offline ๋ค์ด๋ก๋ ๋ฒ์ ์ ์ค์นํ๋ค. (wifi ๋๊ฒจ๋ ์ค์น๊ฐ ์ ๋ ์ ์๋๋ก)
์์)
wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz
์์ถ ํด์
tar zxvf harbor-offline-installer-v2.7.0.tgz.1
์์ถ์ ํ๋ฉด harbor ๋๋ ํ ๋ฆฌ๊ฐ ์๊ธด๋ค.
harbor ๋๋ ํ ๋ฆฌ ๋ด์์ ์ค์ ํ์ผ ํ ํ๋ฆฟ์ ๋ณต์ฌํด์ ์ฌ์ฉํ๋ค.
cp harbor.yml.tmpl harbor.yml
2. docker compose ์ค์น
curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64"
์คํ ๊ถํ์ ๋ถ์ฌํ๋ค
[user@localhost ~]$ sudo chmod a+x /usr/bin/docker-compose
[user@localhost ~]$ ls -l /usr/bin/docker-compose
-rwxr-xr-x. 1 root root 44953600 Feb 6 11:17 /usr/bin/docker-compose
๋ฒ์ ํ์ธํ๊ธฐ
[user@localhost ~]$ docker-compose --version
Docker Compose version v2.15.1
Harbor ์ฌ์ฉํ๊ธฐ (https)
registry.example.com ์ด๋ผ๋ ๋๋ฉ์ธ์ผ๋ก ๊ตฌ์ฑํด๋ณด๊ธฐ
์ฐ์ ์ค์ ์ฌํญ์ ๋ณ๊ฒฝํ๊ธฐ ์ด์ ์ ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃ์ํจ๋ค.
docker-compose down
harbor.yml ํ์ผ์์ hostname ์ ๋ณ๊ฒฝํ๋ค
hostname: registry.example.com
/etc/hosts ํ์ผ์ ํ์ฌ ์๋ฒ์ ip ์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ถ๊ฐํด์ค๋ค (์๋๋ DNS ์๋ฒ๊ฐ ํ์ํ๊ฒ ์ง๋ง ์์๋ก ํ ์คํธํ๊ธฐ ์ํด์ ๋ฐ๋ก ์จ์ค๋ค. )
192.168.56.110 registry.example.com
CA ์ธ์ฆ์ ์์ฑํ๊ธฐ
1) CA ์ธ์ฆ์ Private Key ์์ฑ
$ openssl genrsa -out ca.key 4096
2) CA ์ธ์ฆ์ ๋ฐ๊ธ
$ openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=KR/ST=Seoul/L=Gangnam/O=example/OU=infra/CN=registry.example.com" \
-key ca.key \
-out ca.crt
3) ์๋ฒ Private Key ์์ฑ
$ openssl genrsa -out registry.example.com.key 4096
4) ์๋ฒ ํธ์คํธ ์ธ์ฆ์ ๋ฐ๊ธ์ ์ํ CSR ์์ฑ
$ openssl req -sha512 -new \
-subj "/C=KR/ST=Seoul/L=Gangnam/O=example/OU=infra/CN=registry.example.com" \
-key registry.example.com.key \
-out registry.example.com.csr
CA ์์ ์ง์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๋ ๊ฒ์ด ์๋๋ผ ์์๋ก ๊ฐ์ธ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ฏ๋ก v3.ext ํ์ผ์ ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
$ vim v3.ext
ํ์ผ ๋ด์ ์์ ๋ด์ฉ์ ์จ์ค๋ค.
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=registry.example.com
DNS.2=example
DNS.3=registry
์๋ฒ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ค.
$ openssl x509 -req -sha512 -days 365 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in registry.example.com.csr \
-out registry.example.com.crt
๋์ปค ๋ฐ๋ชฌ์ CA ์ธ์ฆ์ ์ ์ฉ
์๋ฒ ์ธ์ฆ์ ๋ณํ
openssl x509 -inform PEM -in registry.example.com.crt -out registry.example.com.cert
Docker์ ์ธ์ฆ์ ์ ์ฉ์ ์ํ ๋๋ ํฐ๋ฆฌ ์์ฑํ๊ธฐ
mkdir -p /etc/docker/certs.d/registry.example.com/
/etc/docker/certs.d ๋๋ ํ ๋ฆฌ๋ก ํ์ํ ์ธ์ฆ์ ํ์ผ๋ค์ ๋ณต์ฌํ๋ค. ๋์ปค๊ฐ api๋ก ํต์ ์ ํ ๋์๋ https ์ธ์ฆ์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
# cp ca.crt /etc/docker/certs.d/registry.example.com/
# cp registry.example.com.key /etc/docker/certs.d/registry.example.com/
# cp registry.example.com.cert /etc/docker/certs.d/registry.example.com/
๋์ปค ์๋น์ค๋ฅผ ๋ค์ ์คํํ๋ค.
systemctl restart docker.service
/harbor ๋๋ ํ ๋ฆฌ์ harbor.yml ํ์ผ๋ ์์ ํด์ค๋ค.
certificate ์ private_key ๊ฒฝ๋ก๋ฅผ ์๋ง๊ฒ ์ ์ด์ค๋ค
/harbor ๋๋ ํ ๋ฆฌ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ค.
$ sudo ./install.sh
์ฌ๋ก๊ทธ์ธํ๋ค.
[user@localhost harbor]$ docker logout 192.168.56.110
Removing login credentials for 192.168.56.110
[user@localhost harbor]$ docker login 192.168.56.110
์น๋ธ๋ผ์ฐ์ ๋ก ์ ์ํ๋ค. Accept Risk๋ฅผ ์ ํํ๊ณ Harbor ์นํ์ด์ง์ ์ ์ํ๋ค.
๋ก๊ทธ์ธ์ ํ๊ณ ์ ์ํ๋ค
registry ์ ์ฌ๋ฆด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค ํ์์ ๋ค์๊ณผ ๊ฐ๋ค !! library๋ฅผ ๊น๋จน์ง ๋ง์
[user@localhost harbor]$ docker tag httpd:2.4 registry.example.com/library/httpd:2.4
docker login์ ํ๋ค. ์ค์ ์ ๋ฐ๋ก ํ์ง ์์๋ค๋ฉด user๋ admin, password๋ Harbor12345 ์ด๋ค.
$ docker login https://registry.example.com
registry์ ์ ๋ก๋ํ๋ค.
[user@localhost harbor]$ docker push registry.example.com/library/httpd:2.4
*** ๋ก๊ทธ์ธ์ด ๋์ง ์๊ฑฐ๋ ์ ์ฌ๋ผ๊ฐ์ง ์๋ ๊ฒฝ์ฐ harbor ๋๋ ํ ๋ฆฌ์์ ./install.sh ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ก๊ทธ์ธํ๋ฉด๋๋ค
sudo ./install.sh
Harbor์ ์ด๋ฏธ์ง๊ฐ ์ ์ฌ๋ผ๊ฐ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Cloud Engineering > Docker ๐ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Harbor HTTP ๊ตฌ์ฑ์ผ๋ก ๊ตฌ์ถํ๊ธฐ (0) | 2023.02.06 |
---|---|
[Docker] Docker Registry ๋ฅผ ์ด์ฉํ Private Registry ๊ตฌ์ถํ๊ธฐ (0) | 2023.02.06 |
[Docker] Docker ์ ์ฅ์์ ์ด๋ฏธ์ง ์ ๋ก๋ํ๊ธฐ (0) | 2023.02.03 |
[Docker] ์ด๋ฏธ์ง ์์ฑํ๊ธฐ - Dockerfile / Commit / import /export / tag (0) | 2023.02.03 |
[Docker] ์ปจํ ์ด๋ ํฌํธํฌ์๋ฉ (docker run -p) ์ค์ (0) | 2023.02.03 |