본문 바로가기

Dev-env

mac에서 프로젝트를 docker로 빌드하기

근무하면서 작업한 프로젝트를 docker image로 납품하는 경우가 잦았다.
자주 쓸 땐 익숙하게 사용하지만 또 한동안 안쓰다보면 까먹기때문에 간단하게 관리하고자 한다.

# 현재 사용 중인 도커 버전 (버전업에 따라 기능이 더 좋아져서 불필요한 커맨드 옵션이 존재할 수 있음)
> Cloud integration: v1.0.25  
> Version: 20.10.16  
> Server: Docker Desktop 4.9.1 (81317)

#1. docker install

  1. brew 이용하여 도커 설치
    brew install --cask docker  # Homebrew 3.5.2
  2. application 에서 docker 실행

#2. 프로젝트 docker images 생성

#2.1. docker 명령어 이용

  1. 프로젝트 디렉토리 경로로 이동
    cd ${project_dir}
    • project_dir: 프로젝트 경로
    • ex) cd ./next-project

docker 이미지 생성 관리

  1. 이미지 빌드
    docker build -t ${tagname} ${path}
    • tagname: docker image 명
    • path: 빌드할 프로젝트 경로
    • ex) docker build -t next-project .
  2. 이미지 목록 확인
    docker images
  3. 이미지 삭제
    docker rmi ${image}
    • image: 도커 이미지 명 | 유니크한 id 일부
  4. 이미지 file로 빼기 (.tar.gz)
    docker save ${image:version} | gzip > ${file_image_name}.tar.gz
    • image: 도커 이미지 명 | 유니크한 id 일부
    • version(생략가능(default; 최신버전)): 특정 버전 선택
    • file_image_name: 이미지 파일 명
    • ex) docker save next-project | gzip > next-project-220812.tar.gz
  5. 이미지 로드하기
    docker load < ${file_image_name}.tar.gz
    • file_image_name: 이미지 파일 명
    • ex) docker load < next-project-220812.tar.gz

docker 컨테이너 생성 관리

  1. 컨데이터 실행
    docker run --rm -itd -p ${out-port}:${project-port} --name ${name} ${image}
    • --rm: docker stop 시 컨테이너 삭제 옵션
    • -it: tty 할당 ( 대화형 shell 생성)
    • -d: 배경에서 실행 (접속x)
    • -p: port 매핑
    • out_port: local에서 매피할 포트
    • project_port: 도커 내에서 연동될 포트
    • --name: container name
    • image: docker image
    • ex) docker run --rm -itd -p 3000:3000 --name next-web next-project
  2. 컨데이터 목록 및 실행여부 확인 명령어
    docker ps -al
    • -a: 모든 컨데이너 목록 조회
    • -l: 최근 실행 컨테이너 조회
  3. 컨테이너 종료
    docker stop ${container-name}
    • container-name: 도커 컨테이너 명 | 유니크한 id 일부
    • ex) docker stop next-web
  4. 컨데이터 삭제
    docker rm ${container-name}
    • container-name: 도커 컨테이너 명 | 유니크한 id 일부