Post

Linux 도커(4)

  1. 도커 파일(Dockerfile)
    • man dockerfile (즉석에서)
    • 모범사례
      • multi-stage build
      • base image 선택
      • Dockerfile의 명령 라인을 줄이기
      • Dockerfile 명령 라인 순서
  2. docker build
    • docker build -t app
    • docker build -t app -f Dockerfile.txt .
    • cat docker.tardocker build -t app -
    • docker build -t app - < docker.tar
    • docker build –no-cache -t app .
  3. Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
FROM centos:1.0 # 베이스 이미지 설정

# 컨테이너 작성시 실행할 명령
RUN
RUN apt -y install git  # 쉘 형식
RUN ["apt", "-y", "install", "git" ] # EXEC 형식

# 컨테니어 기동(process)시 수행할 명령 지정 
CMD 
CMD nignx -g 'daemon off;' # 쉘 형식
CMD ["nginx", "-g", "daemon off;"] # EXEC 형식
ENTRYPOINT nginx -g 'daemon off;' # 쉘 형식
ENTRYPOINT ["nginx", "-g", "daemon off;"] # EXEC 형식

# ENTRYPOINT vs CMD 
ENTRYPOINT ps # 교체 불가능(무조거 실행)
CMD -ef # 교체 가능
# => 순서대로 합쳐서 실행

WORKDIR /first/second/third
# 위와 아래 세줄의 실행결과는 같다.
WORKDIR /first
WORKDIR second
WORKDIR third

ONBUILD ADD source.tar.gz /usr/share/nginx/html

ENV VAR=hello # 변수 지정
ENV var1=hello 
ENV var2=world
ENV var=$VAR # 변수 안 변수

USER user01
USER user01:group01

# copy vs add (둘다 상대, 절대 경로 가능)
ADD HOST_FILE_DEST DOCKER_IMAGE_DEST   # 복사 후 tar 명령어처럼 풀기
ADD http://internet/src.tar.gz /var/www/html
ADD home* /mydir
COPY HOST_FILE_DEST DOCKER_IMAGE_DEST  # 그냥 복사

# LABEL : 단순 의미의 라벨 지정  
LABEL title='webapp'
LABEL author="Mr, Lee"
LABEL version="2.0"

# 리스닝 포트 번호 노출
EXPOSE 80 # 지정 안하면 기본 tcp 
EXPOSE 53/udp

# 컨테이너 기동시 영구 데이터(persistent data) 저장
VOLUME 컨테이너_디렉토리1 컨테이너_디렉토리2
VOLUME ["컨테이너_디렉토리1", "컨테이너_디렉토리2"] # 공식에서 추천하는 방식

사용자 전환(일반적으로 컨테이너 안에 작업 사용자는 기본적으로 root 사용자이다.)

기본적인 도커 파일이 아니고 명시적으로 도커 파일을 지정하기 위해서는 -f 명령을 사용한다.

docker history vs docker logs
docker history는 이미지에 대해서, docker logs는 컨테이너에 대하여 이용된다.

파일 및 디렉토리 추가(ADD/COPY 명령어) copy vs add 파일/디렉토리/tar ball(.tgz)을 컨테이너 이미지안으로 복사하는 경우

명령어 정리 apt/apt-get yum/dnf go apk pip/pip3

WEB server 정적 페이지 서비스 test.html test.img

cgi (정적 페이지 안에 동적 페이지 제공)

WEB application server 동적 페이지 서비스 test.jsp test.asp

This post is licensed under CC BY 4.0 by the author.