컨테이너 : 독립된 공간으로 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

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

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가지
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 연결
스태틱 ip 설정
docker network create —driver brigdge(안쓰면 디폴트(브릿지)) —subnet 192.16/24 —gateway 192.~ mynet(네트워크이름)
docker network ls : 네트워크 확인