Please enable JavaScript.
Coggle requires JavaScript to display documents.
Docker - Coggle Diagram
Docker
container 만들기
-
container 생성
build 명령어로 생성
없는 파일을 다운로드하고, yarn을 참조하여 dependency 설치
-
-
-
data 유지하기
-
Using Bind Mounts
mount 지점을 직접 설정하여 data를 유지하고, 추가 data를 container에 부여하는데 이용
사견: 일종의 예약실행처럼 보임
run 커맨드시에 옵션을 부여함
-w 로 실행위치 지정, sh -c로 실행명령 예약
예제에선 yarn 설치 후 yarn으로 dev를 실행하는데, 이는 package.json안에 있는 코드로 nodemon을 실행
-
-
-
-
-
-
권장하는 이미지 생성방법
보안 검사(Security scanning)
-
docker scan --login으로 로그인 후, docker scan [이미지 이름]
vulnerability, URL(Info 에서), library version to fix vulnerability(fixed in 에서) 으로 관련 정보 확인
-
-
-
이미지 생성 최적화
FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
MAINTAINER : 메인테이너 정보 (작성자 정보)
RUN : Shell Script 또는 명령을 실행
CMD : 컨테이너가 실행되었을 때 명령이 실행
LABEL : 라벨 작성 (docker inspect 명령으로 label 확인할 수 있습니다.)
EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
ENV : 환경변수 설정
ADD : host로부터 파일 / 디렉터리 추가
COPY : host로부터 파일 복사
ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
VOLUME : 볼륨 마운트
USER : 명령 실행할 사용자 권한 지정
WORKDIR : "RUN", "CMD", "ENTRYPOINT" 명령이 실행될 작업 디렉터리
ARG : Dockerfile 내부 변수
ONBUILD : 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행
SHELL : Default Shell 지정
혼동되는 개념 구분
RUN, CMD, ENTRYPOINT
-
CMD
컨테이너가 실행 될 때 수행하는 명령
- 1 more item...
ENTRYPOINT
컨테이너가 실행 될 때 수행하는 명령
- 1 more item...
ADD, COPY
ADD
URL이나 원곂파일의 다운로드 가능, tar파일을 자동으로 압축해제
COPY
URL이나 원격파일의 다운로드 불가능, 오직 host로부터만 자료를 옮김
빌드 시간 깎기
순서 변경(서순!!)
가장 변하지 않는 스텝을 먼저, 변경되는 스텝은 아래로..
스텝을 나누어서 안 변하는 부분을 앞쪽으로 설정하는 방법
-
-
이미지 크기 줄이기
불필요한 dependencies 제거
디버깅 툴은 필요시에 이용하고 제거, apt류의 경우 추천 패키지를 통해서 불필요한 dependencies를 추가하니 --no-install-recommends 옵션을 이용 권장
-
-
-
경량화
샌드박스 컨테이너 제작
base image로 debian, alpine 선택
-
node:alpine
필요 라이브러리 직접 구성 필요
- 1 more item...
-
-
-
-
외부 볼륨 활용
로그 파일, Runtime시 생성되는 Dynamic Clas, 업로드 파일등을 외부볼륨에 저장
일반적인 외부 볼륨은 HostPath, Network volume
-
Network volume
- 1 more item...
어플리케이션 소스 경량화
WAR, EAR, JAR 등의 Archive를 배포
불필요한 libaray의 중복, JDK의 중복, .svn과 같은 메타 파일 또는 소스 파일 등이 포함되어 있을 수도 있기에 직접 압축을 해제해서 검증 과정
-
가독성 확보
작업자간 Dockerfile 상시 공개
repository를 통해 상시 공유(Nexus, Harbor 이용 또는 Source 형상관리와 묶어 관리)
한 눈에 확인 할 수 있어야 하며, 의도가 명확히 보여야 하고, tag를 통해 버전관리가 되도록 구성
목적을 라인단위 별로 구성, 주석이나 환경변수(ENV)를 이용하여 가독성 확보
RUN, ADD, COPY를 제외한 명령어는 Layer에 포함되지 않으니 가독성을 위해 적극 활용
-
-
목적
컨테이너의 agility, resilience, reliability, scalability등에 이점을 갖는 것
도커를 잘 쓰기 위한 향후 권장 공부방향
-
-
-
-
docker docs의 나머지(language-specific guides, ...)를 연습
-
cli
command
상용 커맨드
run [image 이름]
-
-
-i
표준입력(stdin)모드 활성화, 사용자가 입력 가능하도록 함
-
-t
pseudo-TTY 모드 사용
이 옵션 없이 i옵션만 사용한다면 명령을 입력가능하나, 셸이 표시 안됨
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-