도커에 명령을 내릴 수 있는 CLI(Command line Interface) 도구
컨테이너, 이미지, 볼륨 등을 관리할 수 있다.
클라이언트에서 명령어를 입력하면 호스트로 요청이 간다.
도커를 설치한 서버 혹은 가상머신
물리 서버도 가상 서버도 가능
관련 리소스를 관리하는 백그라운드 프로세스인 데몬이 클라이언트 요청을 받는다.
도커 이미지를 저장하거나 배포하는 시스템
공개 레지스트리 (ex. 도커 허브 - 누구나 이미지를 다운로드/업로드 할 수 있음)
개인 레지스트리
호스트에 존재하지 않는 이미지는 레지스트리에서 다운로드한다.
소프트웨어를 배포하기 위해 필요한 모든 요소(코드, 라이브러리, 설정 등)을
컨테이너 형태로 실행할 수 있는 포맷으로 컴파일 및 빌드한 패키지
💡Digest: 해시 함수를 거쳐나온 후의 데이터
도커 이미지를 실행할 수 있는 인스턴스
# 이미지 다운로드
docker image pull [이미지 이름:태그 이름]
# - 태그 생략 시 latest
# - [도커 이미지 빌드 시 생성된 레이어의 ID = 이미지 인덱스]: Pull complete
# - 이미지 레이어 개수만큼 나타남
# - 태그 이름 자리에 Digest 해시값 입력도 가능
# 이미지 목록 확인
docker image ls
# ls 결과로 나오는 ID는 이미지 다운로드 후 로컬에서 할당받은 ID
# 다운로드 시 나오는 Digest는 도커 레지스트리에 존재하는 이미지 Digest
# 도커 컨테이너 실행
docker container run [이미지명]
docker container start [종료된 컨테이너 ID]
# 도커 컨테이너 접속
docker container run -it [이미지명] # 실행 중인 컨테이너 내부 접속
# i: interactive (표준 입력 열어놓음)
# t: tty (가상 터미널)
docker container attach [실행 중인 컨테이너 ID]
# 도커 컨테이너 종료
docker container stop [컨테이너 ID] # 약 10초 후 종료 (안정적)
docker container kill [컨테이너 ID] # 즉시 종료
exit # 접속 중인 컨테이너 종료
# 도커 컨테이너 목록 확인
docker container ls # 실행 중인 목록
docker container ls -a # 실행 중, 정지 상태 목록
# Exited(0): 정상 종료된 상태
# 실행 중인 컨테이너를 이미지로 저장 (호스트 터미널에서 실행)
docker commit [컨테이너명] [새이미지이름:태그]
■ p.74에 있는 화면 띄워보기

■ 컨테이너 진입 후 ls pwd 실행해보기

■ 컨테이너에서 https://github.com/HH-plus-7th/docker-kubernetes pull 받아보기

■ nginx 이미지를 pull 받고 레이어 구조 확인해보기

■ my-nginx 컨테이너를 백그라운드로 실행 후 브라우저에서 접속 확인


■ stop → start → restart 순서로 컨테이너 상태 변화 관찰해보기

■ 컨테이너와 이미지 정리하기

■ 항해 프론트엔드 과제 clone 하기
■ 컨테이너 내부에서 node, npm 설치하기
■ 개발서버 실행 후 호스트 브라우저에서 http://localhost:5173 접속

■ 스크린샷 올려서 자랑하기~!

■ Chapter03 심화 과제에서 띄웠던 환경(node, npm 설치된 상태)을 이미지로 저장하기
■ 새 이미지로 컨테이너를 실행해서 node, npm이 그대로 있는지 확인하기

■ 새 이미지에서 바로 개발 서버까지 실행해보기

■ ubuntu:22.04 와 새 이미지의 레이어 수 비교해보기
