쿠버네티스, 스프링, 깃허브 액션 배포 - 1. 도커, 도커 데스크탑 설치
docker, github, github-action, kubernetes, registry, spring

서론

이 강의는 쿠버네티스, 스프링, 깃허브 액션 배포를 목적으로 합니다. 또한 모든 라이선스를 피해가서 무료로 사용하는 것을 목적으로 합니다. (비용내고 쓰면된다라고 호기롭게 말하던회사들도… 나중엔……)

라이선스 주요사항.

  • 도커 자체는 무료입니다.
    • https://docs.docker.com/engine/#licensing
  • 다만 도커 데스크탑은 무료가 아닙니다.
    • 도커 데스크탑의 주 기능은 UI 도구이며 없어도 사용에 지장은 없습니다.
    • 이 강의는 도커 데스크탑을 사용하지 않는다는 전제하에 진행됩니다.
    • 도커 데스크탑의 라이선스 정책은 아래와 같습니다.
      • https://docs.docker.com/subscription/desktop-license/
        • 2024년 7월 2일 기준으로 직원 250명 이상 연간수익 1000만달러(100억원:환율 천원 계산)인 경우 유로 플랜을 사용해야합니다.
      • https://www.docker.com/pricing/
        • 다만 프로까지는 부담되는 금액은 아니기에 선택은 여러분의 몫입니다.

도커, 도커 데스크탑 설치

직접 설명을 쓰려고 했으나 아래 사이트가 너무 잘 나와있는 관계로… 그냥 링크를 걸어놓겠습니다. (날로먹기..) 도커 데스크탑의 유료 라이센스를 피하고 싶다면 “도커 데스크탑”을 제외하고 “도커”만 설치하시기 바랍니다.!

  • 윈도우
    • https://docs.docker.com/desktop/install/windows-install/

      # 윈도우의 경우 설치 이후에 파워쉘을 열고 아래 버전을 확인해보자.
      # 앞으로 모든 강의는 파워쉘 기반으로 설명된다.
      wsl -l -v
      # 아래처럼 버전이 2면 그대로 진행하자.
        NAME                   STATE           VERSION
      * Ubuntu-22.04           Running         2
        docker-desktop         Running         2
        docker-desktop-data    Running         2
      # 그렇지 않다면 버전을 지정해주자.
      wsl --set-default-version 2
      # wsl엔 초기 암호가 없으며 암호를 변경하고 싶다면 cmd를 열어서 아래와 같이 입력하자.
      wsl -u root
      passwd
      # ubuntu 계정의 비밀번호도 같이 만들어주자.
      passwd ubuntu
      # 기본적으로 ifconfig 같은것도 없으니 net-tools 설치도 권장합니다.
      sudo apt update
      sudo apt install net-tools
      

      wsl 재설치 방법

      예전에 설치한 wsl 이 심하게 꼬여서 아래처럼 다시 설치했습니다. 무난한 우분투로 다시 깔았습니다.

      wsl --uninstall
      # 필자의 경우 윈도우 11은 괜찮았는데 윈도우 10은 아래와 같은 오류가났다.
      # Error: 0x800701bc WSL 2
      # WSL 2에 커널 구성 요소 업데이트가 필요합니다. 자세한 내용은 https://aka.ms/wsl2kernel을 참조하십시오.
      # 윈도우 10에서 위 오류가 날 경우 링크 타고 들어가서 설치해주면된다.
      wsl --set-default-version 2
      wsl --install -d ubuntu
      # 처음 설치시 유저이름은 컴퓨터 이름과 맞춰주시면 됩니다.
      # 만일 도커 데스크탑이랑 설치하다 꼬였다면 모두 지우고 wsl을 먼저 완료하고 도커 데스크탑을 설치하는것이 정신건강에 좋다.
      
    • https://docs.docker.com/desktop/install/mac-install/
  • 리눅스
    • https://docs.docker.com/desktop/install/linux-install/

도커 설치 확인

도커가 잘 설치되었는지 확인해봅시다.

docker --version

도커의 주요 명령어들

  • 아래 명령어는 자주 쓰이는 명령어로 차차 설명할 예정이니 프린트 해두거나 저장해두시기 바랍니다. (인프라 쪽이야 매일 쓰겠지만 개발자는 한번 자동화 해놓으면 잘 안써서 사용할 때마다 찾아보게 됩니다….) ```

    이미지 관련

    docker pull [이미지 이름]: 도커 허브(Docker Hub) 등에서 이미지를 다운로드합니다. docker build -t [이미지 이름]:[태그] [Dockerfile 경로]: Dockerfile을 사용하여 이미지를 빌드합니다. docker images: 로컬에 저장된 도커 이미지를 목록으로 표시합니다. docker rmi [이미지 ID]: 로컬에서 이미지를 삭제합니다.

컨테이너 관련

docker run [옵션] [이미지 이름]: 이미지를 기반으로 새로운 컨테이너를 생성하고 실행합니다. docker ps: 현재 실행 중인 컨테이너 목록을 표시합니다. docker ps -a: 실행 중이거나 종료된 모든 컨테이너 목록을 표시합니다. docker stop [컨테이너 ID]: 실행 중인 컨테이너를 중지합니다. docker start [컨테이너 ID]: 중지된 컨테이너를 다시 시작합니다. docker restart [컨테이너 ID]: 컨테이너를 재시작합니다. docker rm [컨테이너 ID]: 종료된 컨테이너를 삭제합니다. docker logs [컨테이너 ID]: 컨테이너의 로그를 확인합니다. docker exec -it [컨테이너 ID] [명령어]: 실행 중인 컨테이너에서 명령어를 실행합니다. 주로 쉘에 접속할 때 사용합니다(e.g., docker exec -it [컨테이너 ID] /bin/bash).

네트워크 관련

docker network ls: 도커 네트워크 목록을 표시합니다. docker network create [네트워크 이름]: 새로운 네트워크를 생성합니다. docker network rm [네트워크 이름]: 네트워크를 삭제합니다. docker network inspect [네트워크 이름]: 특정 네트워크의 상세 정보를 확인합니다.

볼륨 관련

docker volume ls: 도커 볼륨 목록을 표시합니다. docker volume create [볼륨 이름]: 새로운 볼륨을 생성합니다. docker volume rm [볼륨 이름]: 볼륨을 삭제합니다. docker volume inspect [볼륨 이름]: 특정 볼륨의 상세 정보를 확인합니다.

도커 컴포즈 관련

docker-compose up: Docker Compose 파일을 기반으로 서비스를 생성하고 실행합니다. docker-compose down: Docker Compose로 실행된 모든 서비스를 중지하고 삭제합니다. docker-compose ps: Docker Compose로 실행 중인 컨테이너 목록을 표시합니다. docker-compose build: Docker Compose 파일을 기반으로 이미지를 빌드합니다. docker-compose logs: Docker Compose로 실행된 서비스의 로그를 확인합니다. ```