a.sh
#!/bin/sh
echo "\$MSG = $MSG"
echo "\$@ = $@"
echo "\$0 = $0"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"
MSG="Hello World" ./a.sh 1 2 3 4 5 6
Busybox + APK(패키지 관리자)
패키지 인덱스
apk update
패키지 검색
apk search <PKG>
패키지 추가
apk add <PKG>
패키지 제거
apk del <PKG>
Dockerfile-alpine
docker build -f Dockerfile-alpine -t pyhello:v1 .
sudo apt install python3-pip python3-venv
mkdir ~/python/hello-flask
cd ~/python/hello-flask
가상환경/프로젝트 생성
python3 -m venv 가상환경이름
가상환경 활성화
. venv/bin/activate
가상환경 비활성화
deactivate
pip3 install Flask
hello.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
export FLASK_APP=hello
flask run
flask run --host='0.0.0.0' [--port='8080']
기본 포트 : 5000
pip3 freeze > requirements.txt
pip3 install -r requirements.txt
Django : 풀스택 프레임 워크
mkdir ~/python/hello-django
cd ~/python/hello-django
python3 -m venv [가상환경이름]
pip3 install Django # $ python -m pip install Django와 동일
pip3 freeze > requirements.txt
mysite/settings.py
...
ALLOWED_HOSTS = ['*']
...
cd mysite
python3 manage.py runserver 0.0.0.0:8000
Language
sudo apt install gcc
mkdir ~/clang
cd ~/clang
hello.c
#include <stdio.h>
int main() {
printf("Hello C World\n");
return 0;
}
gcc hello.c -o hello
file hello
... dynamically linked ...
ldd hello
linux-vdso.so.1 (0x00007ffcd014b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe1a8ed2000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe1a90d2000)
so : c 라이브러리를 의미
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
COPY lib /lib
COPY lib64 /lib64
COPY hello /
CMD ["/hello"]
docker build -t hello:dynamic .
docker run hello:dynamic
gcc hello.c -static -o helloc
Dockerfile-static
FROM scratch
COPY helloc /
CMD ["/helloc"]
docker build -f Dockerfile-static -t hello:static .
docker run hello:static
Dockerfile-multi
FROM gcc AS cbuilder
WORKDIR /root
ADD hello.c .
RUN gcc hello.c -static -o hello
FROM scratch
COPY --from=cbuilder /root/hello /
CMD ["/hello"]
docker build -f Dockerfile-multi -t hello:multi .
docker run hello:multi