일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 패캠챌린지
- 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online
- elastic cache
- Ngrinder Docker
- 직장인자기계발
- aws
- AWS S3 계정이동
- 잔디이전
- ERR unknown command 'JSON.SET'
- 캐시백
- nodemailer
- 패스트캠퍼스
- redis cli
- 패스트캠퍼스후기
- AWS S3 migration
- RedisJSON
- Redis
- Avast 구독취소
- vscode
- aws s3
- 환급챌린지
- ERR unknown command 'JSON.GET'
- putty Inactive
- AWS S3 버킷 삭제
- 캐시백챌린지
- gitlab 잔디옮기기
- Window redis-cli
- Avast Security
- 직장인인강
- redis-cli
- Today
- Total
Developing
패스트캠퍼스 캐시백 챌린지 54일차 본문
도커 이미지 경량화 전략과 도커 데몬 디버깅과 관련된 클립들을 수강하는식으로 챌린지를 진행하였다. Multi Stage Pipeline으로 Dockerfile에서 블록을 나누는 내용도 알 수 있었다. 또한 이미지 빌드의 경량화 여부에 따라서 꽤 많은 용량이 차이가 난다는 것을 새삼 체감할 수 있었다. 다음 포스팅으로는 docker-compose와 관련된 내용을 포스팅 할 예정이다.
도커이미지 경량화전략
실습관련 파일은 하단의 링크에 존재한다.
https://github.com/tedilabs/fastcampus-devops/tree/main/3-docker-kubernetes/3-dockerfile
RUN 내의 명령어들이 &&로 묶여있다.
여러명령어를 하나의 지시어 안에 포함하여 3가지의 명령어를 하나의 layer로 합친 모습이라 할 수 있다. 또한 도커이미지상에서 패키지에 대한 cache를 필요로 하지않는데, cache를 남기는경우 이미지의 용량이 크게 증가하게된다. 따라서 패키지 설치시 —no-cache 옵션의 유무를 고려해야하고, 불필요한 패키지의 cache가 남지 않게 하는 것을 항상 염두하고 있어야 한다.
node 이미지를 빌드하면 900MB에 달하는 용량으로 엄청 크다. node16기반 이미지가 900MB 정도되기에 경량 베이스이미지를 사용하려고 한다.
Debian slim기반으로 만들어진 것이 node 16-slim으로 기존 이미지에 비해 5배정도 경량화 되어있는 것을 확인할 수 있다.
Alpine 리눅스 기반으로 만들어진 것이 도커 컨테이너를 위한 리눅스배포판이다보니 굉장한 이미지 경량화를 자랑한다. 기본 이미지의 9배정도 경량화 되어있는 것을 확인할 수 있다.
Dockerfile.alpine과 Dockerfile.slim의 차이를 확인해보면 FROM 지시어에서 각각 “FROM node:16-alpine” , “FROM node:16-slim” 정도만 다른 것을 확인할 수 있다.
Multi Stage Pipeline은 Dockerfile의 문법 중 하나이다.
FROM 지시어에서 AS 문법이 추가된다.
AS를 통해서 FROM으로 정의되는 Dockerfile을 블록단위로 잡아서 베이스라는 임시 이미지 이름을 부여한다.
FROM 지시어를 여러번 지정해서 base,build,release 블록으로 구성되어있는 것을 확인할 수 있고, 또한 build 블록과 release블록은 base 블록을 기반으로 하는 것을 확인할 수 있다.
이것은 base가 정의된 블록을 재사용한다는 것을 의미한다. 따라서 build 블록은 base 블록의 COPY 명령어가 끝난뒤에 실행되고, 마찬가지로 release의 블록도 base 블록의 COPY 명령어가 끝난뒤에 실행되게 된다.
빌드에 필요한 의존성이 많다면 Multi Stage Pipleline을 통해 경량화 측면에서 큰 효과를 누릴 수 있다.
도커 데몬 디버깅
docker system info
- 도커 시스템에 대한 많은 정보를 출력한다.
docker system events
- 새롭게 발생하는 docker event들이 stream으로 들어오게 된다.
예를 들어 nginx를 하나띄우면 (container create)~(container attach)~(network connect)~(container start) 같은 과정들을 확인할 수 있다.
journalctl -u docker
- 우분투 운영체제의 docker event 확인
docker system df
- 도커의 디스크 사용량을 살펴볼 수 있다. -v 옵션을 주면 더 자세하게 확인 가능하다.
docker system prune
- 중지된 컨테이너, 사용중이지 않은 네트워크, dangling image, dangling build cache를 지워 용량을 확보할 수 있다.
docker stats
- 각 컨테이너별로 CPU,Memory,Network I/O를 확인할 수 있다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
* 본 포스팅은 패스트캠퍼스 환급 챌린지를 위해 작성되었습니다.
'Devops > Fastcampus 캐시백 챌린지' 카테고리의 다른 글
패스트캠퍼스 캐시백 챌린지 56일차 (0) | 2022.06.12 |
---|---|
패스트캠퍼스 캐시백 챌린지 55일차 (0) | 2022.06.11 |
패스트캠퍼스 캐시백 챌린지 53일차 (0) | 2022.06.09 |
패스트캠퍼스 캐시백 챌린지 52일차 (0) | 2022.06.08 |
패스트캠퍼스 캐시백 챌린지 51일차 (0) | 2022.06.07 |