- (생략 - 수업 참조)
- 공식 메뉴얼 :
https://docs.docker.com/engine/reference/commandline/build/
- 이미지 빌드 후 생긴 이미지들 모두 삭제
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
- 도커 튜토리얼을 따라히실 분들은 디렉토리 순서대로 학습 하시기 바랍니다.
- 도커의 핼로우 월드
- 빌드 :
docker build --tag myhello:0.1 .
- 실행 :
docker run --rm myhello:0.1
- 빌드 :
- 주요 관점
- 이미지 빌드하기
- Ubuntu 베이스 이미지와 Alpine 베이스 이미지의 용량 차이 비교
- 각종 주요 도커파일 키워드(명령어) 확인
- nginx 내손으로 만들기
- 빌드 :
docker build --tag mynginx:0.1 .
- 실행 :
docker run -d -p 80:80 mynginx:0.1
- 빌드 :
- 주요 관점
- 리얼 이미지 만들기
- non-interactive 한 형태로 도커파일 만들기
- daemonize 되지 않는, foreground 형태로 실행파일 만들기 (콘솔 로그까지 출력되면 best)
- TZ 및 clean-up 까지 처리 하면 완벽한 마무리
- flask 앱 만들기
- 빌드 :
docker build --tag myflask:0.1 .
- 실행 :
docker run -p 5000:5000 myflask:0.1
- 빌드 :
- 주요 관점
- 실제 앱 만들기
- 파일의 복사
- 불필요한 파일의 예외처리(.dockerignore)
- flask 앱 만들기
- 빌드 :
docker build --tag myflask:0.2 .
- 실행 :
docker run -d -e APP_COLOR=red -p 5000:5000 myflask:0.2
- 빌드 :
- 주요 관점
- 더 리얼한 앱 만들기
- 파일 및 디렉토리의 복사
- 패키지의 설치 및 Dev 와 Ops 환경의 sync 맞추기
- express 앱 만들기
- 빌드 :
docker build --tag myexpress:0.1 .
- 실행 :
docker run -d -p 8000:8000 myexpress:0.1
- 빌드 :
- 주요 관점
- JS 앱 만들기
- npm, package.json, package-lock.json 및 node_modules 의 명확한 이해
- 불필요한 개발도구 파일의 운영 환경에서의 제거
-
npm i express # npm install express npm i -D nodemon # npm install nodemon --save-dev npm install --production # export NODE_ENV=production 및 npm install script { "start": "nodemon app.js" } npm start
-
- Dev 와 Ops 환경의 sync 맞추기
- java 앱 만들기
- 빌드 :
docker build --tag javaapp:0.1 . docker build --tag javaapp:0.2 -f Dockerfile.v2 . docker build --tag javaapp:0.3 -f Dockerfile.v3 .
- 실행 :
docker run --rm javaapp:0.1
- 빌드 :
- 주요 관점
- 싱글 스테이지 빌드 (비효율적 컴파일)
- 싱글 스테이지 빌드 (잘못된 바이너리 복사)
- 멀티 스테이지 빌드 (올바른 컴파일 및 이미지 최적화)
- 멀티 스테이지 빌드 (BEST 예시)
- golang 앱 만들기
- 빌드 :
docker build --tag goapp:0.1 . docker build --tag goapp:0.2 -f Dockerfile.v2 .
- 주요 관점
- 싱글 스테이지 빌드 (비효율적 컴파일)
- 멀티 스테이지 빌드 (올바른 컴파일 및 이미지 최적화)
- 멀티 스테이지 빌드 (BEST 예시)
- dockercompose 를 사용한 개발/배포/운영
- 계정 로그인 :
docker login
- 이미지 태깅 :
docker tag <my-local-image:tag> <account/image:tag>
- 이미지 푸시 :
docker push <account/image:tag>