티스토리 뷰
○ hello.c 내용
더보기
int main()
{
printf("hhhhhh container \n");
return 0;
}
○ Dockerfile 생성
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y gcc
COPY src/hello.c /tmp
WORKDIR /tmp
RUN gcc -o hello-world hello.c
CMD ["/tmp/hello-world"]
▷ sample1 로 이미지파일 생성
[vagrant@docker1 work]$ docker build -t sample1 .
▷ sample1 의 크기
REPOSITORY TAG IMAGE ID CREATED SIZE
sample1 latest fcaafc807ef9 45 seconds ago 221MB
○ 두번째 Dockerfile 생성
# FROM 이 두 번 나온 멀티스테이지라고 한다
# AS 는 기본값이 첫번째부터 0 .. 1 .. 2 .. 로 시작한다 ( 원래는 숫자 )
# 따라서 AS 로 문자로 별명을 준 것 ( 보기 좋게 )
>> 첫번째 FROM 이 빌드를 위한 구역
>> 두번째 FROM 은 실행을 위한 구역
>> 첫번째 구역에 AS가 없다면 COPY - - from = 0 으로 가능하다
FROM ubuntu:18.04 AS build-image
RUN apt-get update
RUN apt-get install -y gcc
COPY src/hello.c /tmp
WORKDIR /tmp
RUN gcc -o hello-world hello.c
FROM ubuntu:18.04 AS runtime-image
COPY --from=build-image /tmp/hello-world .
CMD ["./hello-world"]
▷ 이미지 생성
[vagrant@docker1 work]$ docker build -t sample2 .
▷이미지의 크기
>> 멀티 스테이지 이미지는 크기를 작게 만들 수 있다
[vagrant@docker1 work]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sample2 latest 2ec84cb9d603 36 seconds ago 63.2MB
sample1 latest fcaafc807ef9 26 minutes ago 221MB
'Docker 와 Container' 카테고리의 다른 글
Docker image upload (0) | 2024.03.06 |
---|---|
LAB1 (0) | 2024.03.05 |
Dockerfile - SCRATCH (0) | 2024.03.05 |
Dockerfile - ONBUILD (0) | 2024.03.05 |
Dockerfile - ARG / COPY / VOLUME (0) | 2024.03.05 |