ENCORE CLOUD ARCHITECTURE TIL 4/20 Docker
Dockerfile
- FROM: Base 이미지 지정 (반드시 존재해야 함)
- RUN: 컨테이너 내에서 실행할 명령어 (docker exec)
- ADD/COPY: 호스트에서 컨테이너로 파일복사 (docker cp)
- ENV: 쉘 환경 변수
- WORKDIR: 작업 디렉토리 변경 (RUN, ADD, COPY, CMD, ENTRYPOINT)
- CMD: 실행 할 Application
- ENTRYPOINT: 실행 할 Application
- EXPOSE: 애플리케이션 노출 포트(애플리케이션 설정X, 기본 TCP)
- VOLUME: 볼륨 사용할 경로
FROM centos:7
RUN yum -y install httpd
ADD index.html /var/www/html/index.html
ENV A 100
ENTRYPOINT ["/usr/sbin/httpd"]
CMD ["-D", "FOREGROUND"]
EXPOSE 80
VOLUME /var/www/html
docker build -t <IMAGE>:<TAG> .
CMD 및 ENTRYPOINT 변경
docker run --entrypoint <ENTRYPOINT> <IMAGE> <CMD>
CMD, ENTRYPOINT, RUN 실행 형식
Shell 형식
CMD ls -l
Exec 형식(*)
CMD ['ls', '-l']
Exec 형식에서 Shell을 사용해야 하는 경우(*)
CMD ['/bin/sh', '-c', 'ls', '-l']
주의: exec 형식인 경우 실행 파일을 절대 경로로 표현!
예) ENTRYPOINT , CMD 같이 사용하는 예
ENTRYPOINT python3 /django-helloworld/helloworld/manage.py runserver
CMD 0.0.0.0:8000
docker run -d xyz 0.0.0.0:5000
- ubuntu 이미지에 apache 설치 이미지
- python 이미지에 flask/django 앱 설치 이미지
Ubuntu Timezone 설정
단순 유예
ENV DEBIAN_FRONTEND=noninteractive
Timezone 설정
RUN DEBIAN_FRONTEND=noninteractive apt install tzdata
ENV TZ Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN dpkg-reconfigure --frontend noninteractive tzdata
Ubuntu with Apache Image
FROM ubuntu:focal
RUN apt update
RUN DEBIAN_FRONTEND=noninteractive apt install tzdata
ENV TZ Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localyime && echo $TZ > /etc/timezone
RUN dpkg-reconfigure --frontend noninteractive tzdata
RUN apt install -y apache2
ADD index.html /var/www/html/index.html
ENTRYPOINT ["/usr/sbin/apachectl"]
CMD ["-D", "FOREGROUND"]
EXPOSE 80
VOLUME /var/www/html
이미지 빌드 시 캐시 사용하지 않기
docker build --no-cache -t ubuntu-apache:v1.3 .
C with Docker Image
#include <stdio.h>
int main() {
printf("Hello C World!\n");
return 0;
}
sudo apt install gcc
gcc hello.c -o hello
./hello
Dockerfile
FROM ubuntu:focal
ADD hello /hello
CMD ["/hello"]
docker build -t chello .
docker run chello
실행 안됨
ldd hello
mkdir -p lib/x86_64-linux-gnu
mkdir lib64
cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 lib64/
Dockerfile
FROM scratch
ADD hello /hello
ADD lib /lib
ADD lib64 /lib64
CMD ["/hello"]
docker build -t chello .
이미지 내부 파일 경로
/hello
/lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2
스태틱 바이너리
gcc hello.c --static -o hello-static
ldd hello-static
Dockerfile
FROM scratch
ADD hello-static /hello-static
CMD ["/hello-static"]
docker build -t cstatichello .
docker run cstatichello
Author And Source
이 문제에 관하여(ENCORE CLOUD ARCHITECTURE TIL 4/20 Docker), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tlsalsckd13/ENCORE-CLOUD-ARCHITECTURE-TIL-420-Docker저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)