기본 콘텐츠로 건너뛰기

Docker 요약

Docker 요약

기본 명령어

시작 명령어 및 시작 옵션 (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

다중 컨테이너 응용프로그램 정의

이 블로그의 인기 게시물

Docker Tutorial (Docker Toolbox)

https://www.docker.com/products/overview 설치파일 다운로드. 내 맥북은 가상화를 지원하지 않는 CPU를 가진 2009년형. 그래서 Docker for Mac 사용불가하여 Docker Toolbox 설치. mkdir yourdockerbuild cd yourdockerbuild touch Dockerfile nano Dockerfile FROM imageNameOnHub:version - 불러올 이미지 RUN *** - 최초 실행할 명령 (설치명령 등. image 안에 설치됨) CMD *** - 이미지가 로딩되면 실행할 명령 docker build -t yourImageName . docker run yourImageName 추가로 hub를 통하지 않고 Image를 이동 하려면 Docker Registry 사용 도커 레지스트리 (Docker Registry) 설치하기 + S3 연동