도커 학습#1

KingTG·2024년 3월 14일

도커&k8s

목록 보기
1/13

컨테이너 : 독립된 공간으로 cpu,memory,network,disk등 컨테이너 각각의 리소스 할당

docker host: 도커 데몬이 동작되고 있는 리눅스 커널이 있는 시스템

도커파일은 도커 이미지를 빌드하는 방법을 정의하는 스크립트

도커파일 → 빌드 → 이미지 → create → 컨테이너

이미지는 빌드타임구조 (프로그램이 정지되어 있는 상태의 템플릿)

이미지는 레이어별로 파일형태로 저장된 상태

read만 가능 r/o

컨테이너는 런타임 구조(프로그램이 실행 중인 이미지)

컨테이너는 이미지를 애플리케이션 프로세스로 러닝 중인 상태

read write가능 rw

docker pull → docker run

Dockerfile : 컨테이너를 만들 수 있도록 도와주는 명령어 집합 파일

대소문자 구분하지 않지만 가독성을 위해 사용

FROM 가장먼저 쓴다 모든 도커파일은 FROM으로 부터 시작해야된다.

ENTRYPOINT : 도커 컨테이너가 실행할 때 고정적으로 실행되는 스크립트 OR 명령어

docker build -t ~ . 맨뒤에 한칸 띄고 “.” 꼭 찍기 .은 현재디렉토리 다른 위치에 있다면 그곳위치 쓰면됨

private Registry를 구축하려면

도커허브에서 registry pull 받고

localhost:5000/ubuntu:18.04

docker.example.com:5000/ubuntu:18:04

호스트네임:호트넘버 써야 된다.

docker tag httpd:latest seotg/httpd:latest

이미지의 태그를 바꿔 어디로 올릴지 경로를 알려준다

docker push seotg/httpd:latest

레지스트리를 이용한 프라이빗

docker tag httpd:latest localhost:5000/httpd

docker push localhost:5000/httpd

확인

cd /var/lib/docker/volumes/uuid컨테이너이름~~~/_data/docker/registry/v2/repositories/

기본적으로 컨테이너는 호스트 하드웨어 리소르의 사용을 제한 받지않는다

따라서 리소스 제한 사용

CPU , Memory, Disk I/O

메모리스왑: 디스크를 메모리로 사용

메모리 리소스 제한

docker run -d -m 512m nginx

CPU리소스 제한

docker run -d —cpus=”0.5” utuntu:1.14

Block i/o 제한

docker run -it —rm —blkio-weight 100 ubuntu:lastest /bin/bash

bps: 디바이스에 대한 입출력 속도

iops: 컨테이너 r/w 속도

도커 모니터링

docker stat : 실행중인 컨테이너의 런타임 통계

docker event : 도커 호스트의 실시간 이벤트 정보를 수집해서 출력

작업부하 만들어서 사용 (검색)

stress —cpu 2 : 2코어에 대해 작업부하 100%

stress —vm 2 —vm-byes <크기>

cAdvisor 모니터링툴

컨테이너 데이터 보존 (볼륨 마운트)

docker run -d —name db -v /dbdata:/var/lib/mysql -e myh~~~ mysql:latest

~~~:ro 처럼 권한부여가능

docker run -d -v <저장소주소>:<컨테이너저장소주소>

host path를 쓰지않으면 컨테이너uuid값으로 만들어진다

docker volume ls하면 컨테이너 uuid값 확인가능

docker volume rm (uuid) :삭제

볼륨데이터의 리소스를 다른컨테이너에서 사용

(저장소에있는 html파일을 다른컨테이너에서 실행)

/webdata에 html파일 있는 저장소

docker run -d —name web -p 80:80 -v /webdata:/user/html:ro nginx:1.14

컨테이너끼리 데이터 공유

df : 디스크사용량 확인

⚠⚠컨테이너 통신⚠⚠

포트포워딩

-p : 연결

-p host 포트는 랜덤으로 설정 (안쓰는 번호)

-P 도커파일에서 expose한 포트를 랜덤포트 만들어서 연결 (윗줄과 비슷)

https://bluese05.tistory.com/15 도커 네트워크 설명

도커 네트워크 방식 4가지

  1. bridge(default) 2. host 3. container 4. none

docker0 기본 주소 172.17.0.1, 브릿지 네트워크 (컨테이너의 게이트웨이 주소)

docker0 안에 컨테이너 주소는 순차적으로 172.17.0.2, 17.0.3 생성되고 docker0를 통해 외부로 송출된다

확인 : ip addr 명령어

도커 네트워크 추가 : docker network create —driver bridge —subnet 192~~ —gateway 192~~~ mynet

도커 네트워크 확인 : docker network ls

도커네트워크 설정안해주면 기본적으로 docker0 네트워크를 사용하고 —net 옵션을통해 네트워크를 지정해주게 되면 지정 네트워크 사용가능

docker run -d —name appjs —net mynet —ip 192~~~ -p 8080:8080 vkls/appjs

—link 옵션 : <연결컨테이너name>:<이제설정할name>

docker run -d —name wordpress —link mysql:mysqllink -e ~ -p ~~~ wordpress:4 :: 워드프레스의 db mysql 연결

user-defined netwrok 생성

스태틱 ip 설정

docker network create —driver brigdge(안쓰면 디폴트(브릿지)) —subnet 192.16/24 —gateway 192.~ mynet(네트워크이름)

docker network ls : 네트워크 확인

0개의 댓글