2020. 4. 17. 00:50ㆍ인프라/클라우드
목차
- 기본 용어
- 이미지
- 레이어
- 컨테이너
- 라이프 사이클 (Life Cycle)
- pull & push and commit
- create & start and run
- 주요 명령어
- 이미지 관련 명령어
- 컨테이너 관련 명령어
- 그 외 기본 명령어
기본 용어
1. 이미지
레이어로 구성되어 있는 어플리케이션, 실행 파일 또는 실행 환경 정보를 가지고 있음. 이미지를 구성하기 위한 베이스 이미지를 가지고있는데, 예를들어, nginx를 실행시키기 위한 OS를 베이스 이미지라 할 수 있습니다.
2. 레이어
레이어는 서로 다른 이미지에 같은 레이어가 포함 될 수 있으며, 이미지를 구성하고 있습니다. 레이어의 특징으로는, 같은 레이어를 갖는 이미지들이 설치될 때 최초 한번만 설치되어지고 반대로 삭제될때는 현재 레이어를 사용하고있는 이미지가 존재할 경우 삭제되지 않습니다.
3. 컨테이너
컨테이너는 파일시스템이 격리된 공간이라고 생각할 수 있습니다. 따라서 격리된 공간안에서 서로다른 개발환경을 손쉽게 구축할 수 있습니다. 리눅스의 네임스페이스기반으로 만들어 졌으며 컨테이너의 성능은 네이티브 급이고 마이크로 서비스의 중요한 역할을 합니다. 그 이외에 컨테이너가 필요한 이유에 대해서는 앞선 포스트에서 확인할 수 있습니다.
라이프 사이클
도커의 라이프 사이클은 git을 사용해본 유저라면 쉽게 받아들일 수 있습니다. 깃허브나 깃랩 처럼 저장장소인 docker hub가 존재합니다.
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
'인프라 > 클라우드' 카테고리의 다른 글
[클라우드] 개발자가 도커와 컨테이너를 알아야하는 이유 (0) | 2020.04.14 |
---|