기본 명령어
시작 명령어 및 시작 옵션 (run: pull, create, start)
docker run [OPTION] [IMAGE:tag] [COMMAND] [ARGS...]
[OPTION]
-d detached mode (백그라운드)
--name 컨테이너 이름 설정
-it interactive, terminal
-p 포트 연결 ( -p HostPort:ContainerPort )
-P EXPOSE된 모든 포트를 연결한다.
이미지 삭제
docker rmi [IMAGE_NAME]
모든 컨테이너 보기
docker ps -a
종료된 모든 컨테이너 삭제
docker rm $(docker ps -a -q)
컨테이너에서 특정 명령 실행
docker exec [OPTION] [CONTAINER_NAME] [COMMAND]
데이터 볼륨 마운트 (예: MySql)
docker run -v /my/own/hostDir:/var/lib/mysql mysql:5.7
Dockerfile
이미지 생성을 위한 설정 파일. 이 파일이 있는 디렉토리에서 Docker build 실행 시 이 파일을 기반으로 이미지 빌드.
FROM: 기반 이미지 파일 (FROM mariadb/server)
USER: 아래 RUN 명령어를 실행할 유저 지정 (USER root)
RUN: 터미널 명령 실행. 이미지 빌드 때 실행 (RUN apt-get update)
WORKDIR: 터미널에서의 작업 경로 설정 (WORKDIR /etc)
ENTRYPOINT: 터미널 명령 실행. 컨테이너 실행 시 실행 (ENTRYPOINT ./npm)
CMD: 터미널 명령 실행. 컨테이너 실행 시 실행. 어플 실행, ENTRYPOINT의 파라메터 등에 쓰임 (CMD [“executable”,“param1”,“param2”] - ENTRYPOINT가 설정되어 있으면 [“param1”,“param2”])
VOLUME: 컨테이너의 특정 폴더를 호스트폴더로 연결. 로그, 데이터 등의 저장 등에 쓰임. 호스트폴더를 명시할 수는 없다. (VOLUME /etc)
EXPOSE: 노출 할 포트 번호 (EXPOSE 80)
ENV: 환경변수 설정 (ENV PASSWORD abcd)
ADD: 파일, 폴더를 이미지에 복사. 빌드 디렉토리에 있는 파일만 사용가능. 압축파일은 풀어서 저장. 중복된 파일은 덮어쓰지 않음. 변경하지 않는 파일을 추가할 때 주로 쓰임 (ADD temp.txt /etc/temp.txt)
COPY: 일반 파일 복사. 대부분의 파일 복사는 이것을 사용.
빌드
docker bulid -t "REPOSITORY:TAG"
-t: tag 지정. 생략 시 latest로 설정됨
docker bulid -t "REPOSITORY:TAG" github.com/test/docker-test'
깃허브의 dockerfile을 빌드할 수도 있다.
.dockerignore
dockerfile 빌드 시 해당 디렉토리의 모든 파일을 이미지에 전송하므로, 포함하지 않아야 할 파일은 이 파일에 명시하여야 한다. (".git", ".svn, “.DS_Store”, “node_modiles/”)
docker-compose.yml
다중 컨테이너 응용프로그램 정의