근무하면서 작업한 프로젝트를 docker image로 납품하는 경우가 잦았다.
자주 쓸 땐 익숙하게 사용하지만 또 한동안 안쓰다보면 까먹기때문에 간단하게 관리하고자 한다.
# 현재 사용 중인 도커 버전 (버전업에 따라 기능이 더 좋아져서 불필요한 커맨드 옵션이 존재할 수 있음)
> Cloud integration: v1.0.25
> Version: 20.10.16
> Server: Docker Desktop 4.9.1 (81317)
#1. docker install
- brew 이용하여 도커 설치
brew install --cask docker # Homebrew 3.5.2
- application 에서 docker 실행
#2. 프로젝트 docker images 생성
#2.1. docker 명령어 이용
- 프로젝트 디렉토리 경로로 이동
cd ${project_dir}
- project_dir: 프로젝트 경로
- ex)
cd ./next-project
docker 이미지 생성 관리
- 이미지 빌드
docker build -t ${tagname} ${path}
- tagname: docker image 명
- path: 빌드할 프로젝트 경로
- ex)
docker build -t next-project .
- 이미지 목록 확인
docker images
- 이미지 삭제
docker rmi ${image}
- image: 도커 이미지 명 | 유니크한 id 일부
- 이미지 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
- 이미지 로드하기
docker load < ${file_image_name}.tar.gz
- file_image_name: 이미지 파일 명
- ex)
docker load < next-project-220812.tar.gz
docker 컨테이너 생성 관리
- 컨데이터 실행
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
- 컨데이터 목록 및 실행여부 확인 명령어
docker ps -al
- -a: 모든 컨데이너 목록 조회
- -l: 최근 실행 컨테이너 조회
- 컨테이너 종료
docker stop ${container-name}
- container-name: 도커 컨테이너 명 | 유니크한 id 일부
- ex)
docker stop next-web
- 컨데이터 삭제
docker rm ${container-name}
- container-name: 도커 컨테이너 명 | 유니크한 id 일부