도커 용어 정리
- 기본용어
1. Docker
- execution time
- 프로세스 실행
- 컨테이너 하나 당 하나의 프로세스
- docker run으로 만들어짐
2. Container
- 레이어 파일시스템을 사용
- 한 번 레이어를 add하면 삭제 불가능
- 레이어를 스쿼시는 가능
다른 레이어들을 삽입하는 각각의 과정
- 각각 레이어들은 캐싱되어 재사용가능, no-cache 옵션도 있음
3. Base Images
- 필요한 패키지들과 함께 container를 prebuilt함
- ubuntu, centos etc
4. Container Registry
- 태그된 이미지를 쉽게 저장하는 곳
- API 제공, NPM처럼 패키지 있음
- Docker hub, Quay.io, GitHub, Gitlab etc, AWS, GCP, Azure etc
5. 빌드 환경
- 도커가 Dockerfile이나 빌드에 필요한 파일들을 찾은 그 빌드환경 => Docker daemon에 모든 컨텍스트가 보내짐 => 안보내려면 .dockerignore 추가필요
- .dockerignore은 .gitignore과 유사함
- Dockerfile
1. COPY
- 빌드환경에 있던 파일들을 컨테이너 파일시스템으로 복사
COPY package.json /app/
- ADD도 COPY와 비슷하지만, 혹시모르는 상황에 대비해서 COPY를 사용해라
- 명령어
1. docker run
- docker run => 새로운 컨테이너를 생성한다.
- run 할 경우, 현재 로컬에 설치된게 없으면 docker hub에서 가져와서 설치한다.
docker run hello-world
docker run node:15.14.0
- Docker Image를 지우려면 Docker Container를 먼저 제거해야한다.
docker rm DOCKER_CONTAINER_ID
docker image rm DOCKER_IMAGE_NAME
2. 도커 이미지를 버저닝하면서 생성
docker build -t carved-rock-fitness/run-controller:v1 .
# or
docker build -t carved-rock-fitness/run-controller:v1.1 .
# ...
후, 특정 버전의 이미지를 실행
docker run --rm -ti carved-rock-fitness/run-controller:v1
--rm: 완료 후 삭제
-ti: 상호작용가능한 터미널을 붙임
--name: 컨테이너 이름 붙임
-p/--port: 호스트 머신으로의 포트를 지정
--network: 네트워크 구성
Dockerfile 안의 ARG, ENV
ARG RT_VERSION=15.14.0
FROM node:${RT_VERSION}
RUN env
ARG RT_VERSION
ENV APP_VERSION=3.2.1
RUN env
CMD env
후 도커 이미지 빌드 및 러닝을 하면
docker build . -t argenv
# 혹은 다른버전으로 설치도 가능
docker build . -t argenv:14.0.0 --build-arg RT_VERSION=14.0.0
# 후
docker run --rm argenv
: '
NODE_VERSION=15.14.0
HOSTNAME=a5b0a8e16fa5
YARN_VERSION=1.22.5
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
APP_VERSION=3.2.1
'
--build-arg: 넘길 수 있는 인자들을 정의할 수 있음
# 예시
docker build . -t argenv:14.0.0 --build-arg RT_VERSION=14.0.1 YARN_VERSION=1.22.6