해당 포스팅은 이성미 강사님의 따라 배우는 도커(따배도, https://www.youtube.com/@ttabae-learn)를 보고 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
오늘은 고통스럽다.
내일은 더 고통스럽다.
그리고 내일 모래는 아름다울 것이다.
Mǎ Yún(알리바바 그룹 창업자 겸 회장)

Container Volume


  • 컨테이너 이미지는 read-only(컨테이너로 올리면 수정가능)
  • 컨테이너에 추가되는 데이터들은 별도의 RW 레이어에 저장.
    • RO 와 RW 하나같이 보이게 하는 시스템 ⇒ union file system
  • 컨테이너에 추가되는 이미지는 별도의 레이어에서 생성

Data보존


  • rw(/var/lib/mysql)에 저장. ⇒ 대신에 특정 저장소에 저장하도록.(/dbdate) 호스트의 DB 데이터 영구보존
  • docker run -d --name db
    -v /dbdata:/var/lib/mysql => 디스크에 저장하도록
    -e MYSQL_ALLOW_EMPTY_PASSWORD=pass
    mysql:latest
  • -v <hostpath>:<container mount path>(/var/lib/mysql 내용을 hostpath에 저장)
    -v <hostpath>:<container mount path>:<read write mode>
    -v <container mount path>
    (/var/lib/docker/volume/UUID/_data 디렉토리에 저장)
  • docker run -v /webdata:/webdata -d —name df smlinux/df:latest
    docker run -d -v /webdata:/usr/share/nginx/html:ro -d ubuntu:latest

컨테이너끼리 데이터 공유하기


  • df 명령어: 디스크 사용량을 모니터링할 때 사용

10초마다 디스크 사용량을 index.html에 작성하는 code

cat df.sh

#!/bin/bash
mkdir -p /webdata
while true
do
	df -h / > /webdata/index.html
	sleep 10
done

컨테이너 빌드

# dockerfile
FROM ubuntu:18.04
ADD df.sh /bin/df.sh
RUN chmod +x /bin/df.sh
ENTRYPOINT ["/bin/df.sh"]

도커 실행

docker run -d -v /webdata:/webdata —name df smlinux/df:latest

'CICD > docker' 카테고리의 다른 글

[Docker] 빌드에서 운영까지  (0) 2024.06.19
[Docker] Container 간 통신  (2) 2024.06.19
[Docker] Container 관리  (0) 2024.06.17
[Docker] Container 사용하기  (0) 2024.06.17
[Docker] Container Registry  (0) 2024.06.17
해당 포스팅은 이성미 강사님의 따라 배우는 도커(따배도, https://www.youtube.com/@ttabae-learn)를 보고 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
오늘은 고통스럽다.
내일은 더 고통스럽다.
그리고 내일 모래는 아름다울 것이다.
Mǎ Yún(알리바바 그룹 창업자 겸 회장)

Container 하드웨어 리소스 제한


  • 기본으로 컨테이너는 호스트 하드웨어 리소스의 사용제한을 받지 않음.
    • 컨테이너가 필요한만큼 할당해야 함.
  • docker command를 통해 제한할 수 있는 리소스
    • CPU
    • Memory
    • Disk io
    • docker run --help를 통해 확인 

Memory 리소스 제한

  • 제한 단위 b(byte), k(KB), m(MB), g(GB)
  • --memory, -m
    • 컨테이너가 사용할 최대 메모리양 지정
    • 할당된 것보다 더 많은 메모리 사용시 죽어버림
  • --memory-swap
    • 컨테이너가 사용할 스왑 메모리 영역에 대한 설정
    • 메모리 + 스왑 메모리
    • 생략시 메모리의 2배가 설정
  • --memory-reservation
    • --memory 값보다 작은 값으로 구성하는 소프트 제한 값 설정
  • --oom-kill-disable
    • OOM Killer가 프로세스 kill하지 못하도록 보호

CPU 리소스 제한

  • --cpus
    • 컨테이너에 할당할 CPU core 수 설정
    • --cpus="1.5" 컨테이너가 최대 1.5개의 CPU 파워 사용 가능
    • 연산 작업이 많은 컨테이너에 cpu 수를 늘리면 좋음.
  • --cpuset-cpus
    • 컨테이너가 사용할 수 있는 CPU나 코어를 할당. cpu index는 0부터
    • --putset-cpus=0-4
  • --cpu-share
    • 컨테이너가 사용하는 CPU 비중을 1024 값을 기반으로 설정.
    • --cpu-share 2048 기본값보다 두배 많은 CPU 자원 할당.

Block IO 제한

  • --blkio-weight, --blkio-weight-device
    • Block IO의 Quota를 설정할 수 있으며 100~1000까지 선택
    • default 500
  • --device-read-bps, --device-write-bps
    • 특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정
  • --device-read-iops, --device-write-iops
    • 컨테이너의 read/write 속도의 쿼터를 설정.
    • 초당 quota를 제한해서 IO를 발생시킴. 0이상의 정수로 표기
    • 초당 데이터 전송량 = IOPS * 블럭 크기(단위 데이터 용량)

컨테이너 사용 리소스를 확인하는 모니터링 툴


  • docker monitoring commands
    • docker stat: 실행중인 컨테이너의 런타임 통계
      • docker stats [options] [container]
    • docker event: 도커 호스트의 실시간 event 정보를 수집해서 출력
      • docker events -f container=<MAME>
      • docker image -f container=<MAME>
  • docker monitoring application

'CICD > docker' 카테고리의 다른 글

[Docker] Container 간 통신  (2) 2024.06.19
[Docker] Container Storage  (0) 2024.06.18
[Docker] Container 사용하기  (0) 2024.06.17
[Docker] Container Registry  (0) 2024.06.17
[Docker] Docker Container 만들기  (0) 2024.06.17
해당 포스팅은 이성미 강사님의 따라 배우는 도커(따배도, https://www.youtube.com/@ttabae-learn)를 보고 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
오늘은 고통스럽다.
내일은 더 고통스럽다.
그리고 내일 모래는 아름다울 것이다.
Mǎ Yún(알리바바 그룹 창업자 겸 회장)

현재까지 프로세스


Container Image 관리


  • Container Life Cycle에 관한 내용
  • 이미지 검색: docker search [option] <imageName:tag>
  • 이미지 다운로드: docker pull [option] <imageName:tag>
    • <imageName:tag> 이름으로 repository에서 관리.
    • 같은 버전이여도 이름이 다르면 repository에서 따로 저장됨.
    • Image는 imageID로 구분하기에 같은 imageId를 가진 두개의 image가 생성됨.
  • 다운받은 이미지 목록 출력: docker images
  • 다운받은 이미지 상세보기: docker inspect [option] <containerName>
  • 이미지 삭제: docker rmi [option] <imageName:tag>

Container 실행 Life Cycle


  • docker host에 다운받은 이미지를 컨테이너화: docker create [option] <imageName:tag>
    • 기본이 백그라운드에서 동작
    • docker create --name webserver nginx:1.14
  • docker daemon에 컨테이너 실행: docker start [option] <container>
    • create 상태인 컨테이너를 running
    • docker start webserver
  • 컨테이너 생성 및 실행: docker run [option] <imageName:tag>
    • pull -> create -> start를 한번에 실행해주는 명령어.
    • docker run --name webserver -d nginx:1.14
  • 실행중인 컨테이너 확인: docker ps [option]
    • docker ps
  • 실행중인 컨테이너 상세보기: docker inspect [option] <imageName:tag>
    • ip addr, layer, resource 등등을 보여줌
    • docker inspect webserver
  • 동작중인 컨테이너 중지: docker stop [option] <container>
    • docker stop webserver
  • 컨테이너 삭제: docker rm [option] <container>
    • running 중인 컨테이너는 삭제 불가
    • docker rm webserver

Container 확인


  • 컨테이너 동작되는 프로세스 확인: docker top [option] <container>
    • docker top webserver
  • 현재 컨테이너의 Log 정보확인: docker logs [option] <container>
    • docker logs webserver
  • 현재 컨테이너에 추가 명령어 실행: docker exec [option] <container>
    • docker exec webserver /bin/bash
  • foreground로 실행중인 컨테이너에 연결: docker attach [option] <container>
    • docker attach centos

Example


ip 부분은 가렸습니다

 

'CICD > docker' 카테고리의 다른 글

[Docker] Container Storage  (0) 2024.06.18
[Docker] Container 관리  (0) 2024.06.17
[Docker] Container Registry  (0) 2024.06.17
[Docker] Docker Container 만들기  (0) 2024.06.17
[Docker] Container 개념  (0) 2024.06.17
해당 포스팅은 이성미 강사님의 따라 배우는 도커(따배도, https://www.youtube.com/@ttabae-learn)를 보고 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
오늘은 고통스럽다.
내일은 더 고통스럽다.
그리고 내일 모래는 아름다울 것이다.
Mǎ Yún(알리바바 그룹 창업자 겸 회장)

Docker Registry


  • 컨테이너 보관창고
    • 컨테이너를 모아놓은 저장소
  • 종류
    • Registry: 컨테이너 이미지를 저장하는 저장소
    • Docker hub: hub.docker.com
    • private registry: 사내의 컨테이너 저장소

Docker hub 사용하기(public registry)


  • https://hub.docker.com
    • 도커 계정을 만들어야함.
  • image 종류: official images(도커 허브가 운영하는 이미지), verified publisher, etc
  • 이미지 검색: docker search <keyword>
    • repository 이름이나 description에 정의된 이름에서 찾음.
  • 이미지 다운: docker pull <repository name>:<version>
  • docker hub 로그인: docker login
    • docker logout 하기 전까지 항상 로그인 유지
    • 아래 보이는 경로에 로그인 정보 저장.

  • docker Image name 변경: docker tag httpd:latest hiro/httpd:latest
    • 나의 docker hub repository에 푸시하기 위해서는 내 계정 정보가 이미지에 저장되어 있어야 함.
  • docker hub에 넣기: docker push hiro/httpd:latest

Private Registry 구축


  • registry 컨테이너를 이용해 Private 컨테이너 운영
    • docker run -d -p 5000:5000 --restart always --name registry registry:2
    • registry 컨테이너 다운받고 실행.
  • image repository ⇒ private registry 구축.
    • localhost:5000/ubuntu:18.04
    • docker.example.com:5000/ubuntu:18.04
    • docker hub와 마찬가지로 localhost:5000과 같은 Host 명이 있어야 Private registry에 업로드 가능
docker tag httpd:latest localhost:5000/httpd:latest
docker images localhost:5000/httpd
docker push localhost:5000/httpd:latest

'CICD > docker' 카테고리의 다른 글

[Docker] Container 관리  (0) 2024.06.17
[Docker] Container 사용하기  (0) 2024.06.17
[Docker] Docker Container 만들기  (0) 2024.06.17
[Docker] Container 개념  (0) 2024.06.17
[Docker] Docker 설치  (0) 2024.06.16

+ Recent posts