상세 컨텐츠

본문 제목

[Docker] Docker에 대해 알아보자

😎 지식/클라우드☁️

by :Eundms 2024. 1. 1. 12:18

본문

도커 호스트

: 도커 데몬이 동작하고 있는 시스템

컨테이너

: 실행파일과 운영환경이 모두 들어 있는 독립된 공간

Dockerfile

: 컨테이너 이미지를 생성할 수 있는 지시어(Instruction)을 적어놓은 파일

# comment
FROM 컨테이너 베이스 이미지 (운영환경)
MAINTAINER 이미지 생성한 사람의 이름 및 정보
LABEL 컨테이너 이미지에 컨테이너 정보를 저장
RUN 컨테이너 빌드를 위해 Base Image에서 실행할 Command
COPY 컨테이너 빌드시 호스트의 파일을 컨테이너로 복사
ADD 컨테이너 빌드시 호스트의 파일(tag, url)을 컨테이너로 복사
WORKDIR 컨테이너 빌드시 명령이 실행될 작업 디렉터리 설정
ENV 환경 변수 지정
USER 명령 및 컨테이너 실행시 적용할 유저 설정
VOLUME 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트
EXPOSE 컨테이너 동작 시 외부에서 사용할 포트 지정
CMD 컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정
ENTRYPOINT CMD와 함께 사용하면서 command 지정 시 사용

https://docs.docker.com/engine/reference/builder/

 

Dockerfile reference

Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.

docs.docker.com

Private Registry 구축하기

registry 컨테이너를 이용해 Private 컨테이너 레지스트리 운영

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker images eundms.com:5000/ubuntu:18.04 #private registry 는 url까지 명시해야 한다
docker pull eundms.com:5000/ubuntu:18.04

이미지 관리 명령어

docker search [옵션] <이미지이름:태그명>

docker pull [옵션] <이미지이름:태그명> # 이미지 다운로드

docker images # 다운로드 받은 잉미지 목록 출력

docker inspect [옵션] <이미지이름:태그명> # 다운로드 받은 이미지 상세보기

docker rmi [옵션] <이미지이름> # 이미지 삭제

컨테이너 생성/실행/목록/중지/삭제 명령어

docker create [옵션] <이미지이름:태그명>  #컨테이너 생성

docker start [옵션] 컨테이너이름          #컨테이너 실행

docker run [옵션] <이미지이름:태그명>      #컨테이너 생성/실행

docker ps [옵션]                         #실행 중인 컨테이너 목록 확인

docker stop [옵션] 컨테이너이름           #동작중인 컨테이너 중지

docker rm [옵션] 컨테이너이름             #컨테이너 삭제

실행 중인 컨테이너 관리

docker ps [옵션]                #실행중인 컨테이너 목록 확인

docker attach [옵션] 컨테이너이름 #포그라운드로 실행중인 컨테이너에 연결

docker exec [옵션] 컨테이너이름   #동작중인 컨테이너에 NEW 명령어 추가 실행

docker top [옵션] 컨테이너이름      #컨테이너에서 동작되는 프로세스 확인

docker logs [옵션] 컨테이너이름     #동작중인 컨테이너가 생성한 로그 보기


컨테이너 리소스 관리

- 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다

- 컨테이너가 필요로 하는 만큼의 리소스만 할당해야 한다

- Docker command를 통해 CPU, Memory, Disk I/O 을 제한할 수 있다

 

 

Memory 리소스 제한

- 제한 단위는 b, k, m,g 로 할당

--memory, -m         # 컨테이너가 사용할 최대 메모리 양 지정

--memory-swap        # 컨테이너가 사용할 스왑 메모리 영역에 대한 설정, 메모리 + 스왑. 생략시 메모리의 2배가 설정됨

--memory-reservation # --memory값보다 적은 값으로 구성하는 소프트 제한 값 설정

--oom-kill-disable  # OOM Killer가 프로세스 kill하지 못하도록 보호

 

docker run -d -m 512m --memory-reservataion 500m nginx:1.14

 

CPU 리소스 제한

--cpus # 컨테이너에 할당할 CPU core수 지정, --cpus="1.5" 컨테이너가 최대 1.5개의 CPU 파워 사용 가능

--cpuset-cpus #컨테이너가 사용할 수 있는 CPU나 코어를 할당. cpu index는 0부터, --cpuset-cpus=0-4

--cpu-share #컨테이너가 사용하는 CPU 비중을 1024값을 기반으로 설정 --cpu-share 2048 기본 값보다 두 배 많은 CPU 자원을 할당

Block I/O제한 ~

https://youtu.be/7HA_00KNtbc?list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&t=749

 

docker monitoring commands

docker stats [OPTIONS] [CONTAINER...]  #실행 중인 컨테이너의 런타임 통계를 확인

docker events -f container=<NAME>  #도커 호스트의 실시간 event 정보를 수집해서 출력

docker image -f container=<NAME>

 

cAdvisor

https://github.com/google/cadvisor

 

GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

Analyzes resource usage and performance characteristics of running containers. - GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

github.com

 

728x90

관련글 더보기

댓글 영역