[클라우드] 도커(Docker)의 기본 간단 정리

2020. 4. 17. 00:50인프라/클라우드

 목차 

  • 기본 용어
    • 이미지
    • 레이어
    • 컨테이너

 

  • 라이프 사이클 (Life Cycle)
    • pull & push and commit
    • create & start and run

 

  • 주요 명령어
    • 이미지 관련 명령어
    • 컨테이너 관련 명령어
    • 그 외 기본 명령어

 

 기본 용어 

 1. 이미지 

레이어로 구성되어 있는 어플리케이션, 실행 파일 또는 실행 환경 정보를 가지고 있음. 이미지를 구성하기 위한 베이스 이미지를 가지고있는데, 예를들어, nginx를 실행시키기 위한 OS를 베이스 이미지라 할 수 있습니다.

 

 2. 레이어 

레이어는 서로 다른 이미지에 같은 레이어가 포함 될 수 있으며, 이미지를 구성하고 있습니다. 레이어의 특징으로는, 같은 레이어를 갖는 이미지들이 설치될 때 최초 한번만 설치되어지고 반대로 삭제될때는 현재 레이어를 사용하고있는 이미지가 존재할 경우 삭제되지 않습니다.

 

docker layer

 

 3. 컨테이너 

컨테이너는 파일시스템이 격리된 공간이라고 생각할 수 있습니다. 따라서 격리된 공간안에서 서로다른 개발환경을 손쉽게 구축할 수 있습니다. 리눅스의 네임스페이스기반으로 만들어 졌으며 컨테이너의 성능은 네이티브 급이고 마이크로 서비스의 중요한 역할을 합니다. 그 이외에 컨테이너가 필요한 이유에 대해서는 앞선 포스트에서 확인할 수 있습니다. 

 

 라이프 사이클 

도커의 라이프 사이클은 git을 사용해본 유저라면 쉽게 받아들일 수 있습니다. 깃허브나 깃랩 처럼 저장장소인 docker hub가 존재합니다. 

 

docker life cycle

 

 1. pull & push and commit 

 

도커 허브에서 로컬로 이미지를 받아올 수 있는 명령어

docker pull <image>

 

로컬에서 도커 허브에 이미지 저장하는 명령어

docker push <image>

 

푸쉬하기전에 간단한 변경 및 생성 설명 메세지를 commit하는 명령어

docker commit -m "message" <container> <image>:<tag>

 

 

 2. create & start and run 

 

도커 이미지를 컨테이너로 만드는 명령어

docker create <image>

 

도커 컨테이너를 실행시키는 명령어

docker start <container>

 

도커 컨테이너를 만들고 실행시키는 명령어 (create & start)

docker run -d -p <host port>:<container port> --rm --name <name> <container>

-d : background 실행시 사용

--name : 컨테이너 이름을 지어줌

-p : host의 포트와 container의 포트를 이어줌

--rm : 컨테이너 stop시 삭제 (테스트용)

-v : host 내부와 container내부를 mount시켜주는 옵션

 

 

 주요 명령어 

 1. 이미지 관련 명령어 

보유 모든 이미지 목록 확인 명령어

docker images

 

이미지 삭제 명령어

docker rmi <image>

 

*이미지 삭제 시 사용중인 컨테이너가 없어야 합니다.

 

 

 2. 컨테이너 관련 명령어 

보유 모든 컨테이너 목록 확인 명령어

docker ps -a

 

컨테이너 삭제 명령어

docker rm <container>

 

*컨테이너 삭제시 실행중인 컨테이너가 없어야 합니다.

 

모든 컨테이너 강제 삭제 명령어

docker rm -f `docker ps -a -q`

-f : 강제 삭제

-q : id만 추출

 

 

 3. 그외 명령어 

컨테이너 내부 접속 명령어

docker exec -it <container> /bin/bash

 

호스트와 컨테이너 간의 파일 복사 명령어

# host -> container
docker cp <path> <container>:<container path>

# container -> host
docker cp <container>:<container paht> <path>

# container -> container
docker cp <container1>:<container1 paht> <container2>:container2 path>

 

 

 참조 

https://docs.docker.com/get-started/overview/
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html