✔️ C Language 컴파일 : C, C++, Golang, Rust Java : 컴파일을 하지만 바이트 코드를 만들어낸다. CPU가 바로 알아들을 수 없다. JVM에 의해 해석된다. .NET(C#) - .NET 프레임 워크 컴파일 과정을 통해 실행 파일을 만들어줘야 한다. CPU가 바로 실행할 수 있는 실행 파일을 만들기때문에 속도가 매우 빠르다. 스크립트 : Shell, Perl, Python, Ruby, Javascript 인터프리터/런타임 이 필요하다. 소스코드 그대로를 실행하며 인터프리터가 실시간으로 해석하여 커널에게 넘기고 CPU에게 넘긴다. #include int main() print("Hello C World\n"); return 0; } 소스 코드를 바로 실행할 수 없다. 컴파일해서..
✔️ Alpine Linux Busybox + APK(패키지 관리자) 패키지 인덱스 apk update 패키지 검색 apk search 패키지 추가 apk add 패키지 제거 apk del 다음 세개의 python official image를 비교해보자 vagrant@docker ~/image-build/myweb-ubuntu docker pull python:3.9-buster vagrant@docker ~/image-build/myweb-ubuntu docker pull python:3.9-slim-buster vagrant@docker ~/image-build/myweb-ubuntu docker pull python:3.9-alpine vagrant@docker ~/imag..
✔️ Docker Cache ubuntu 이미지를 httpd 서비스 이미지로 만드는 Dockerfile이다. vagrant@docker ~/image-build/myweb-ubuntu cat Dockerfile FROM ubuntu:focal RUN apt update; DEBIAN_FORNTEND=noninteractive apt install tzdata RUN ln -sf /bin/share/zoneinfo/Asia/Seoul /etc/localtime RUN apt install -y apache2 COPY index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"] FROM RUN..
✔️ ubuntu 이미지로 httpd 이미지 만들기 ubuntu 이미지로 httpd 서비스가 동작하는 이미지를 만들기 위해서는 Timezone 설정이 필요하다. ls -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime Timezone 설정을 위해서는 해당 명령을 실행해야 하는데 파일이 없어서 실행할 수 없다. tzdata : /usr/share/zoneinfo 라고 하는 디렉토리와 하위 파일을 생성하는 패키지이다. apt update apt install tzdata apt update를 수행 후 apt install tzdata로 tzdata 패키지를 설치한다. tzdata를 설치할 때 대륙과 국가를 묻는 대화 형식의 설치창을 볼 수 있다. Current defau..
✔️ Shell(쉘) 변수 Shell에서 $ 표시는 모두 변수를 참조한다는 뜻이다. a.sh #!/bin/sh echo "\$MSG = $MSG" # MSG 변수를 출력 echo "\$@ = $@" echo "\$0 = $0" # 출력된다. echo "\$1 = $1" vagrant@docker ~ ./a.sh abc xyz 123 456 789 111 $MSG = $@ = abc xyz 123 456 789 111 $0 = ./a.sh $1 = abc $2 = xyz $3 = 123 $0 - 명령어 $n(n = 1, 2, 3...) - 인자 $@ : 명령어를 제외하고 나머지 모든 인수 vagrant@docker ~ MSG="hello world" vagrant@docker ~ ./..
✔️ Dockerfile로 이미지 빌드 Dockerfile reference docs.docker.com 현재 디렉토리에 도커 파일이 있어야 한다. 현재 디렉토리를 기준으로 하위 디렉토리의 내용까지 모두 이미지로 만들기 때문에 root에서 작업하지 않는다. 도커 파일 작성시 Instruction은 관습적으로 대문자로 작성한다. ✔️ Instruction ✔️ FROM Base Image FROM FROM [:] FROM [@] ✔️ RUN RUN - execute command, 이미지를 빌드하는 중에 실행할 명령어를 지정한다. Shell Form RUN yum install httpd → /bin/sh -c yum install httpd Exec Form RUN ["yum", "install", "h..