Docker - image
도커란?
- 애플리케이션을 개발/배포/실행하기 위한 플랫폼
- 컨테이너를 사용하여 애플리케이션 및 지원 구성 요소 개발
- 리눅스 자체 기능을 사용하여 프로세스 단위의 격리 환경 제공
- 배포 용량과 시간 단축, 성능 손실 최소화
도커 엔진과 도커 데몬(dockerd)
- 외부에서 Docker API 요청을 받아 Docker 객체와 서비스들을 관리
- 컨테이너를 생성하고 관리하는 주체
- 도커 데몬 : 도커 프로세스가 실행되어 입력 받을 준비가 된 상태
도커 클라이언트(docker)
- 입력된 명령어를 Docker API 형태로 도커 데몬에게 전달
- 도커 엔진의 수행 결과를 반환 받아 사용자에게 출력
도커 레지스트리(Registry)
- 도커에서 사용되는 이미지들을 저장하고 공유해주는 원격 저장소
- 공개 레지스트리(Docker Hub)와 사설 레지스트리 사용 가능
도커 설치
- 다양한 운영체제에서 사용 가능(리눅스, 윈도우, 맥 OS X)
- 리눅스를 권장한다고 함. 리눅스 컨테이너 가상화라서..!
- 설치 및 설정 방법은 운영체제에 따라 조금씩 다르지만, 설치된 이후 사용방법은 동일
-
설치 전 확인
1) 최신 window 버전인지 확인
2) 설치 전에 ‘CPU 가상화 사용’ 확인
- 작업관리자 > 성능 > CPU 가상화 ‘사용’
-
- Docker Download
- 위 url로 들어가서 다운로드
- Windows PowerShell 에서 설치된 docker 버전 확인
docker -v
도커 이미지
- 컨테이너를 만들고 실행하기 위한 읽기 전용 파일(템플릿)
- 모든 컨테이너는 이미지 기반으로 생성
- 컨테이너 실행에 필요한 파일과 설정 값 등을 포함
도커 이미지와 컨테이너
- 컨테이너는 필요한 파일과 설정을 이미지에서 읽기전용으로 가져다 사용하고, 변경된 사항만 컨테이너 계층에 별도 저장
- 하나의 이미지로 여러 컨테이너에서 사용 가능
-
생활코딩 영상에서는 이렇게 비유를 해주셨다.
수업 때는 정확한 개념을 쌓는 것보다는 진도를 많이 나가는 게 중요한 건지..
개념 잡을 시간이 너무 부족하다. 반면 생코는 개념만 확실히 알려주니까 좋다.
도커 허브(Docker Hub)
- 도커에서 공식적으로 제공하고 있는 중앙 이미지 저장소
- 도커 계정을 가지고 있으면 누구든 이미지 업로드/다운로드 가능
- 기본적인 리눅스 운영체제부터 웹서버, 데이터베이스, 각종 애플리케이션 등의 다양한 종류의 이미지를 도커 레지스트리에서 내려 받아 컨테이너로 생성
도커 이미지 이름
- 저장소 이름 생략 시 도커 허브 공식 이미지로 인식
- 태그는 버전을 나타냄
- 태그 생략 시 최신 버전(latest)으로 인식
도커 이미지 검색
- Docker Hub에서 검색
- PowerShell에서 검색
docker search [이미지명]
docker search tomcat
도커 이미지 다운로드
- 태그를 생략하거나 :latest 입력 시 최신 버전 다운로드
docker pull [저장소이름/]<이미지이름>[:태그]
docker pull tomcat:8.5
docker pull tomcat:latest
-
다운 받은 이미지 조회
docker images
// tomcat 정보만 조회
docker image tomcat
// 세부 조회
docker image inspect [IMAGE ID]
docker [image] inspect 551e // 이미지 ID를 입력 시 [image] 생략 가능
도커 이미지 추출
- 도커 이미지를 별도의 파일로 저장할 때 사용
docker save -o <파일명> <이미지명>[:태그]
// -o 옵션 : 추출될 파일명을 지정
도커 이미지 로드
- 추출된 파일을 다시 도커 내 이미지로 가져올 때 사용
docker load -i <파일명>
// * -i 옵션 : 로드할 파일명을 지정
실습 때는 tomcat image를 추출 -> 삭제 -> 로드 했는데,
난 추출 시 D드라이브의 용량이..없다고해서 alpine으로 해봤다.
-
도커 이미지 이름 추가
- 기존 이미지를 새로운 이름으로 추가(이름만 새로 저장)
[기존저장소/]<기존이미지명>[:기존태그]
[새로운저장소/]<새로운이미지명>[:새로운태그]
docker tag tomcat:8.5 mytom:1
도커 이미지 삭제
- 이미지명을 추가(tag)한 이미지를 삭제할 경우 이미지는 삭제되지 않고 이름만 삭제
docker rmi <이미지이름:태그 or IMAGE ID>
docker rmi mytom:1 // 이미지명만 삭제
docker rmi tomcat:8.5 // 이미지 삭제