Action

스토리지 마운트

대체로 파일을 직접 편집해야하는 일이 많다면 바인드 마운트, 그렇지 않다면 볼륨 마운트를 사용한다.

  • 볼륨 마운트 : 도커 엔진이 관리하는 영역의 볼륨을 컨테이너에 디스크 형태로 마운트, 직접적인 조작이 어려워 자주 사용하지 않지만 지우면 안되는 파일을 둔다.
  • 바인드 마운트 : 호스트 컴퓨터의 디렉토리를 컨테이너에 마운트한다. 자주 사용하는 파일을 두는데 사용한다.

바인드 마운트 절차

  1. 디렉토리를 만든다. 되도록 운영체제에 영향이 가지 않을 만한 곳에 생성한다.
  2. docker run -v 스토리지경로:컨테이너마운트경로를 실행한다.

볼륨 마운트 절차

  1. docker volume create 볼륨이름으로 볼륨을 생성한다.
  2. docker run -v 볼륨이름:컨테이너마운트경로를 실행한다.
  3. 볼륨을 삭제할 때에는 docker volume rm 볼륨이름을 실행한다.

이미지 생성

commit

docker commit 컨테이너이름 이미지이름으로 컨테이너를 복제한 이미지를 생성한다.

Dockerfile

docker build -t 이미지이름 Dockerfile의경로를 실행하면 이미지를 생성한다. 확장자 없이 Dockerfile이라고 이름을 지정하면 된다.

Dockerfile 스크립트

  • FROM : 기반 이미지 이름
  • ADD : 이미지에 파일/폴더 추가
  • COPY : 이미지에 파일/폴더 추가
  • RUN : 빌드할 때 실행할 명령어 지정
  • CMD : 컨테이너를 실행할 때 실행할 명령어 지정
  • ENTRYPOINT : 컨테이너를 실행할 때 실행할 명령어 강제 지정
  • ONBUILD : 이 이미지를 기반으로 다른 이미지를 빌드할 때 실행할 명령어 지정
  • EXPOSE : 포트 지정
  • VOLUME : 볼륨 경로 지정
  • ENV : 환경변수 정의
  • WORKDIR : RUN, CMD, ENTRYPOINT, ADD, COPY에 정의된 명령어를 실행하는 작업 디렉토리 지정
  • SHELL : 빌드 시 사용할 셸 지정
  • LABEL : 이름, 버전, 제작자 정보 등 지정
  • USER : RUN, CMD, ENTRYPOINT에 정의된 명령어를 실행하는 사용자, 그룹 지정
  • ARG : docker build 시 입력받는 인자 설정
  • STOPSIGNAL : docker stop 시 컨테이너에 실행 중인 프로그램에 전달되는 시그널 지정
  • HEALTHCHECK : 컨테이너 헬스 체크 방법 지정

컨테이너 개조

docker exec -it 컨테이너이름 /bin/bash를 실행하면 컨테이너에서 bash를 실행할 수 있다. 이를 이용해 컨테이너에서 패키지 설치 등의 작업을 실행할 수 있다. bash를 실행하는 동안에는 apache 등의 소프트웨어는 정지된다.

레지스트리

  • 레지스트리 : 이미지를 배포하는 장소, 기본 포트는 5000번
  • 리포지토리 : 레지스트리를 구성하는 단위

  • tag : 레지스트리에 업로드 된 이미지의 태그는 레지스트리주소/리포지토리이름:버전의 형식을 띈다.
  • push : 태그에 해당하는 이미지를 리포지토리에 업로드한다.

비공개 레지스트리를 만들고 싶다면 docker run -d -p 5000:5000 registry를 실행하면 된다.