본문 바로가기
요즘공부

[도커&쿠버네티스] 교육 3일차_ Docker harbor, docker compose

by 게으른 피글렛 2025. 3. 26.
반응형

1. Docker harbor

harbor - Web UI 기반의 Docker Registry

 

우분투서버에

harbor 설치 > harbor 암호 등 설정 변경 > 실행 > UI 접속

 

<harbor 설치>

harbor를 github를 이용하여 다운로드

****Ubuntu 22.04****

vagrant@ubuntu2204:~/work$ wget  https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
vagrant@ubuntu2204:~/work$ ls
harbor-offline-installer-v2.12.2.tgz

 

우분투에 있는 다운로드파일을 centos 파일로 넘김

 

#sftp로 centos 서버 접속
vagrant@ubuntu2204:~/work$ sftp vagrant@registry.example.com

#접속 완료
sftp> put harbor-offline-installer-v2.12.2.tgz
Uploading harbor-offline-installer-v2.12.2.tgz to /home/vagrant/harbor-offline-installer-v2.12.2.tgz
harbor-offline-installer-v2.12.2.tgz          100%  618MB  30.6MB/s   00:20

 

****Centos9s****

전송이 완료됨

[vagrant@centos ~]$ ls
harbor-offline-installer-v2.12.2.tgz  mariadb.tar

 

*.tgz 압축을 풀어줌

#압축을 풀어주기 전에 내용을 먼저 확인함
[vagrant@centos ~]$ tar -tf harbor-offline-installer-v2.12.2.tgz
harbor/harbor.v2.12.2.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl

#압축을 풀어줌
[vagrant@centos ~]$ tar -xf harbor-offline-installer-v2.12.2.tgz
[vagrant@centos ~]$ ls
harbor  harbor-offline-installer-v2.12.2.tgz  mariadb.tar

 

 

<harbor 암호 등 설정 변경>

 

****Centos9s****

설정값을 변경해야함

harbor 파일에 들어가면 harbor.yml.tmpl 파일이 있음 탬플릿이므로 이걸 활용하여 설정 값을 변경해야함

 

[vagrant@centos harbor]$ ls
common.sh  harbor.v2.12.2.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

 

harbor.yml.tmpl  -> 복사 ->  harbor.yml

[vagrant@centos harbor]$ cp harbor.yml.tmpl harbor.yml
[vagrant@centos harbor]$ ls
common.sh              harbor.yml       install.sh  prepare
harbor.v2.12.2.tar.gz  harbor.yml.tmpl  LICENSE

 

barbor.yml 파일 수정

[vagrant@centos harbor]$ vi harbor.yml

 

수정완료

 

harbor 설치

[vagrant@centos harbor]$ sudo ./install.sh

 

설치하게되면 docker-compose가 자동으로 설치가 됨 

컨테이너가 연결되었다고 뜸

 

 

harbor와 관련된 docker가 생성이 완료

기존에 만들었던 레지스트리 컨테이너는 harbor 컨테이너와 충돌되어 삭제함

 

<실행>

 

docker compose up 실햄함

[vagrant@centos harbor]$ sudo docker compose up -d
[+] Running 9/9
 ✔ Container registry           Started                                     2.6s
 ✔ Container harbor-core        Started                                     3.6s
 ✔ Container nginx              Started                                     4.9s
 ✔ Container harbor-jobservice  Started                                     4.8s
 ✔ Container harbor-log         Started                                     0.7s
 ✔ Container harbor-portal      Started                                     1.7s
 ✔ Container harbor-db          Started                                     1.9s
 ✔ Container redis              Started                                     2.0s
 ✔ Container registryctl        Started                                     1.8s

오류발생시 docker restart 해주고 다시 compose up

 

 

<UI 접속>

 

http://192.168.50.20

 

id : admin

pw: 1234

(harbor.yml 에서 변경한 값)

 

 

도커 harbor를 만들었고 여기에서 서버를 관리할 예정

 

사용자를 추가함

 

프로젝트를 추가함

그리고 우분투에서 이 harbor 접속시 http로 접속이 가능하도록 설정함

vagrant@ubuntu2204:/etc/docker$ sudo vi daemon.json
vagrant@ubuntu2204:/etc/docker$ sudo cat daemon.json
{"insecure-registries": ["registry.example.com:80"] }

vagrant@ubuntu2204:/etc/docker$ sudo systemctl restart docker

 

조금전 harbor로 만든 id/pw로 서버 접속

접속 완료

vagrant@ubuntu2204:/etc/docker$ docker login registry.example.com:80 -u piglet8
Password:
WARNING! Your password will be stored unencrypted in /home/vagrant/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded

 

프로젝트를 구성하여 harbor 웹으로 확인 할 수 있도록 올려둘 예정

#올리기 전 단계
vagrant@ubuntu2204:/etc/docker$ docker tag httpd registry.example.com:80/myproject-1/nginx

#올리기
vagrant@ubuntu2204:/etc/docker$ docker push registry.example.com:80/myproject-1/nginx
Using default tag: latest
The push refers to repository [registry.example.com:80/myproject-1/nginx]
e48683950315: Pushed
1b533b3f600d: Pushed
45d2a6f2a0b1: Pushed
5f70bf18a086: Pushed
d465f9c6793b: Pushed
7914c8f600f5: Pushed
latest: digest: sha256:c4414c8e7fa4e1f9df8f6141940bb3e222bd7febaf1df10ecd3d5a5991436496 size: 1572

#올라간 프로젝트 확인
vagrant@ubuntu2204:/etc/docker$ docker images registry.example.com:80/myproject-1/httpd
REPOSITORY                                  TAG       IMAGE ID       CREATED        SIZE
registry.example.com:80/myproject-1/nginx   latest    4d98e80840bb   2 months ago   148MB

 

 

등록된 것을 확인 할 수 있음

 

 

2. docker-compose

docker-compose 설치 -> docker-compose.yaml 로 서버 생성

 

<docker-compose 설치>

#docker compose 설치
#버전확인
vagrant@ubuntu2204:~/work$ docker --version
Docker version 27.5.1, build 9f9e405
#보통 자동설치되어있으나, 설치되어있지 않다면 아래와 같이 실행

#설치
vagrant@ubuntu2204:~/work$ sudo apt-get update
vagrant@ubuntu2204:~/work$ sudo apt-get install docker-compose-plugin

# 버전확인
vagrant@ubuntu2204:~/work$ docker compose version
Docker Compose version v2.34.0

 

이건 그냥 enter

 

 

<docker-compose.yaml 로 서버 생성> 

vagrant@ubuntu2204:~/work$ vi docker-compose.yaml
vagrant@ubuntu2204:~/work$ cat docker-compose.yaml
 networks:
  webapps:
    driver: bridge
    ipam:
      config:
      - subnet: 172.30.0.0/16
 services:
  myapache:
    image: httpd:latest
    ports:
    - "9000:80"
    networks:
      webapps:
        ipv4_address: 172.30.0.10
 #   links:  (deprecated)
 #     - mydb:db
    depends_on:
    - mydb
  mydb:
    image: mysql:latest
    ports:
    - "9001:3306"
    networks:
      webapps:
        ipv4_address: 172.30.0.11

    environment:
    - MYSQL_ROOT_PASSWORD=mypass
    - MYSQL_USER=user1
    - MYSQL_PASSWORD=userpass
    - MYSQL_DATABASE=userdb
    volumes:
    - /var/dbfiles:/var/lib/mysql

 

올리기

up 을 하면 왜 에러가나는지 원인을 못찾음..

# docker compose 올리기
vagrant@ubuntu2204:~/work$ docker compose up

vagrant@ubuntu2204:~/work$ docker compose ps -a
NAME              IMAGE       COMMAND                  SERVICE    CREATED         STATUS                          PORTS
work-myapache-1   httpd:2.4   "httpd-foreground"       myapache   3 minutes ago   Exited (0) About a minute ago
work-mydb-1       mysql:5.7   "docker-entrypoint.s…"   mydb       3 minutes ago   Exited (2) 3 minutes ago

 

 

docker compose 확인

vagrant@ubuntu2204:~/work$ docker compose ps
NAME              IMAGE       COMMAND                  SERVICE    CREATED         STATUS              PORTS
work-myapache-1   httpd:2.4   "httpd-foreground"       myapache   4 minutes ago   Up About a minute   0.0.0.0:9000->80/tcp
work-mydb-1       mysql:5.5   "docker-entrypoint.s…"   mydb       4 minutes ago   Up About a minute   0.0.0.0:9001->3306/tcp

 

 

docker compose 제거

vagrant@ubuntu2204:~/work$ docker compose stop
[+] Stopping 2/2
 ✔ Container work-mydb-1      Stopped                                      1.3s
 ✔ Container work-myapache-1  Stopped                                      1.3s
vagrant@ubuntu2204:~/work$ docker compose rm
? Going to remove work-mydb-1, work-myapache-1 Yes
[+] Removing 2/2
 ✔ Container work-myapache-1  Removed                                      0.0s
 ✔ Container work-mydb-1      Removed                                      0.0s

 

 

 

도커 완료~!

 

 

반응형