도커 이미지 구조 및 기본 명령어


도커 이미지 내부 파일 구조 보기

도커 작동 순서

  1. 도커 클라이언트에 명령어 입력 후 도커 서버로 보냄
  2. 도커 서버에서 컨테이너를 위한 이미지가 캐시에 있는지 확인
  3. 있다면 그 이미지로 컨테이너를 생성하고 없으면 도커 허브에서 다운 받음

이미지 내부 파일 시스템 구조 보기

docker run alpine ls

docker: 도커 클라리언트 언급

run: 컨테이너 생성 및 실행

이미지이름: 이 컨테이너를 위한 이미지

ls: 원래 이미지가 가지고 있는 시작 명령어를 무시하고 여기 있는 커맨드를 실행하게함(ls는 현재 디렉토리의 파일 리스트 표출)

img


컨테이너 나열하기

docker run alpine ping localhost
docker ps

img

  • CONTAINED ID: 컨테이너 고유 아이디 해시값, 일부분만 표출
  • IMAGE: 컨테이너 생성시 사용한 도커 이미지
  • COMMAND: 컨테이너 시작시 실행될 명령어(대부분 별도 설정 필요 x)
  • CREATED: 컨테이너 생성된 시간
  • STATUS: 컨테이너 상태. 실행중은 Up, 종료는 Exited, 일시정지 Pause
  • PORTS: 컨테이나가 개방한 포트와 호스트에 연결한 포트. 특별한 설정을 하지 않으면 출력되지 않는다.
  • NAMES: 컨테이너 고유한 이름. 컨테이너 생성시 –name 옵션으로 이름을 설정하지 않으면 임의로 설정. 중복이 안되고 docker rename 명령어로 이름 변경 가능 ex) docker rename orignal changed

–format: 원하는 요소만 출력


현재 실행되고 있지 않은 컨테이너도 출력: -a 옵션

docker ps -a


도커 컨테이너의 생명주기

([생성] -> [시작] -> [실행]): docker run

-> [중지] -> [삭제]

create: 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 전송

docker create hello-world

start: 도커 컨테이너 시작

-a 옵션(attach): 도커 컨테이너에 붙어있으면서 화면에 표출되는 output 전달

docker start -a <id>


stop: 실행중인 도커 컨테이너 정지

gracefully하게 그동안 하던 작업들을 완료하고 컨테이너 정지

docker stop -> SIGTERM(Grace period: 정리하는 시간) -> SIGKILL -> MAIN PROCESS

docker stop <id>


kill: 실행중인 도커 컨테이너 중지

stop과 달리 기다리지 않고 바로 중지 docker kill -> SIGKILL -> Main Process

docker kill <id>


rm: 중지된 컨테이너 삭제

docker ps -a로 중지된 컨테이너 확인

docker rm <id or 이름>
docker rm `docker ps -a -q` # 전부 삭제

docker rmi <이미지 id>  # 이미지 삭제

docker system prune # 한번에 컨테이너, 이미지, 네트워크 전부 삭제


실행중인 컨테이너에 명령어 전달

docker exec <id>
docker exec -it <id>    # it를 붙여줘야 명령어를 계속 실행할 수 있음 
#컨테이너 안에 쉘, 터미널 환경으로 접속 -> sh
docker exec -it <id> sh

© 2020. All rights reserved.