Docker Image
Docker 이미지란?
컨테이너를 실행하기위한 패키징 템플릿. docker image를 결합하여 container를 만든다.
이미지의 구조
┌─────────────────────────┐ │ 애플리케이션 레이어 │ ← 내 소스코드 ├─────────────────────────┤ │ 의존성 레이어 │ ← npm install, pip install ├─────────────────────────┤ │ 런타임 레이어 │ ← Node.js, Python ├─────────────────────────┤ │ OS 레이어 │ ← Ubuntu, Alpine Linux └─────────────────────────┘
Docker환경에서 사용하는 명령어
# image pull wkrdjq
docker image pull docker.io/library/busybox:1.36
# image 제거작업
docker image rm centos:7
# 현재 로컬의 image 확인
docker image ls
# 현재 사용중인 시스템 확인
docker system df
docekr login -u [계정]
Dockerfile을 통해서 이미지를 빌드하기
주의점은 이때 한번 쓴 RUN에서 &&를 사용해서 여러 명령어를 한번에 입력한다. 그 이유는 레이어 최적화 때문이다. / RUN을 분리하면 하나의 설치한 레이어를 다음 레이어에서 삭제해봤자 이전 레이어에 대한 내용이라서 삭제가 되지 않는다. 그러므로 DOCKER 파일 최적화에서 별로 좋지 않다. 따라서 하나의 레이어에서 docker api-get 같은 명령어를 통해 패키지 관리 라이브러리를 사용하고 이후에 지워줘야 이미지 크기가 줄어들어서 사용에 용이하다.
# ← 레이어 1: Ubuntu OS
FROM ubuntu:20.04
# ← 레이어 2:Node.js 앱 최적화
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
apt-get install -y nodejs && \
npm install -g pm2 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# ← 레이어 4: package.json 복사
COPY package.json .
# ← 레이어 5: 의존성 설치
RUN npm install
COPY . . # ← 레이어 6: 소스코드 복사
- 이미지 생성환경을 우선 확인 ( ubuntu에서 nginX를 실행하는 이미지를 만들거다. )
- 기본적인 실행환경으로 container 생성
docker container run -it --name koosample ubuntu
apt-get update
aot-get ubstakk nginx -y
# host로 이동
docker cp index.html koosample:/var/www/html/index.html
docker commit -a "Koo sang" -m "nginx web server image" koosample web-nginx:1.0
docker image ls
docker tag web-nginx:1.0 docker.io/koosangmo/web-nginx:1.0
docker push koosangmo/web-nginx:1.0
docker image rm web-nginx:1.0
docker image rm koosangmo/web-nginx:1.0
docker container run -d --name web -p 8080:80 koosangmo/web-nginx:1.0 nginx -g 'daemon off; '
# container안의 모든 정보를 합쳐서 image로 만듦.
docker container export c1 > c1.tar
# 파일 생성 확인
ls -ih c1.tar
# image의 데이터를 그대로 import 작업 진행
docekr image import
### Dockerfile 을 이용해서 build
```bash
# Dockerfile명칭이 그대로라면 생략 가능
docker image build -t [이미지이름] -f [Dockerfile명칭] [경로.]
docker image build -t koo00 -f Dockerfile .