dockerfile 생성 방식
스텝이 넘어갈수록 로워레이어위에 어퍼레이어가 씌워지고 그다음 스텝에서 로워레이어가 되는 형태
-> 레이어가 많아진다 = 이미지 크기가 커진다
-> 레이어의 크기를 작게 만들어야한다
-> 레이어를 적게 하기 위해 명령어를 한줄에 다 이어서 작성 (논리 연산자 사용) -> 가독성이 떨어지니까 백슬래쉬 사용
도커파일 내 논리연산자 :
&& - AND 연산자 : 앞의 명령어가 참이면 뒤 명령어 실행 (ex. nginx 도커파일 참고)
; - 앞의 명령어의 결과에 상관없이 실행. 명령어의 나열
;보다는 &&를 사용하는게 좋음
|| - OR 연산자 : 앞의 명령어가 참이면 뒤 명령어 실행하지 않음 -> 도커파일에서는 거의 사용하지 않음
entrypoint = cmd
but
cmd : 지정된 명령어를 유저가 변경가능 (유저에 의해서 pid 1번 프로세스 변경가능)
entrypoint : 그게 안됨
둘 다 사용하는 이유 ->특정명령어는 바뀌지 않음 (이부분은 엔트리포인트) 하지만 명령어의 파라미터는 변경가능 (여기가 CMD) 유저가 개입하면 명령어는 바뀌지 않고 파라미터만 바뀌도록 하기를 원하면 두가지를 동시에 사용
도커파일 작성 형식
쉘방식 : 쉘에다가 입력하듯이 입력하는 방식 (RUN 명령어는 쉘 방식을 선호)
exec 방식 : 대괄호로 묶고 아이템형식을 인식해서 쌍따옴표로 구분
CMD, entrypoint는 exec 방식을 쓰는게 보편적
-> 쉘이 먼저 실행되는것이 아니라 해당 명령어를 바로 실행하기 위한 목적으로 exec 방식 사용.
(쉘 방식을 사용하면 쉘이 실행된 후에(쉘이 pid 1번이 됨) 차순위로 지정한 명령어가 사용됨)
add : 로컬 뿐 아니라 네트워크상 데이터도 넣을 수 있음. tar 파일 등을 넣으면 아카이브가 해제됨
copy : localhost에 있는 파일만 넣을 수 있음. tar 파일등을 있는 그대로 넣음(원래 형태 보존)
ENV : 컨테이너 안에서 사용되는 환경변수 설정 (ARG : 변수를 도커파일 안에서 사용하겠다)
WORKDIR : 시작 디렉토리 설정.
ONBUILD : 업무분리를 위해서
HEALTHCHECK : 도커가 제대로 동작하고 있는지 확인
--interval=30s --timeout=5s --retries=3
echo $? : 리턴코드 (0: 정상실행 / 그외: 비정상)
dockerfile -> image 무슨차이...?
도커파일 만들기 : 안어려움
도커파일 잘 만들기 : ㅈㄴ어려움 -> 다른사람이 만들어 놓은 도커파일을 많이 봐야함
도커 컴포즈
- 원큐에 실행/폐기하는 명령어 모음 파일
- YAML문법을 사용
- 도커 컴포즈 정의파일은 정해져있음
yaml 구조 - "key" : "값"
version: "3.8" services: ← 컨테이너 설정(docker run …) volumes: ← 컨테이너 볼륨(docker volume create …) networks: ← 컨테이너 네트워크(docker network create …) |
- 줄맞춤이 중요, but tab키로 들여쓰기 x, 스페이스바로
'교육관련 > hp 도커 쿠버네티스 교육 수강일지' 카테고리의 다른 글
[수강일지] 10일차 : 쿠버네티스 기초 (2) (0) | 2024.01.19 |
---|---|
[수강일지] 9일차 : 쿠버네티스 기초 (1) (0) | 2024.01.18 |
[수강일지] 7일차 : Docker (3) (0) | 2024.01.16 |
[수강일지] 5일차 : docker (0) | 2024.01.12 |
[수강일지] 4일차 : 리눅스 기초 (4) (1) | 2024.01.11 |
댓글