26일차
-
전가상화, 반가상화
- 전가상화: 하드웨어를 완전히 가상화하는 기술
- 장점: 하드웨어를 완전히 가상화하기 때문에 게스트 OS같은 운영체제의 별다른 수정이 필요없음
- 단점: 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느리다.
- 반가상화: 하드웨어를 완전히 가상화하지 않고 스스로 가상화를 인지하고 있다.
- 장점: 전가상화보다 속도가 빠르다.
- 단점: 게스트OS의 커널을 일부 수정해야한다.
-
컨테이너
- 컨테이너란 응용 프로그램과 환경(라이브러리,설정 파일)을 독립환경에서 실행 및 관리
- 장점은 시간과 공간에 제약 없이 PC만 있다면 독립된 환경에서 실행이 가능하다.
-
컨테이너 오케스트레이션
- 규모 애플리케이션을 배포할 수 있도록 컨테이너의 네트워킹 및 관리를 자동화하는 프로세스
-
docker
- 도커란 컨테이너 기반의 가상화 플랫폼으로 컨테이너를 쉽게 만들고 관리하는 툴
-
docker volum
- docker volume이란?
- 컨테이너 삭제 시 자체 파일 시스템이 사라지는 특성이 있는데, 이 해결을 위해 도커 볼륨을 사용한다. 즉,볼륨이란 컨테이너 내부 폴더와 외부 폴더를 연결하는 것
- docker volume 종류
- 익명 볼륨(tmpfs mount) : Host OS tmp랑 폴더 연결
- 지명된 볼륨(volume mount): 볼륨에 이름을 부여하여 간단하게 연동 및 영구적으로 유지
- 바인드 볼륨(bind mount): Host OS에 특정 경로랑 연동
docker volume 실습
-
바인드 볼륨
- mkdir html
- echo "Hello World" > index.html
- mv index.html html
- docker run -d -p 8081:80 --name skills-cnt -v /home/ec2-user/html:/usr/local/apache2/htdocs httpd:2.4.62
- docker run -d -p 8082:80 --name skills-cnt2 -v type=bind,source=/home/ec2-user/html,target=/usr/local/apache2/htdocs httpd:2.4.62
-
지명된 볼륨
- docker volume create skills-vol
-
docker network
-
Bridg(기본값)
- Host OS랑 네트워크는 격리되어 있으나, 브릿지를 통해 외부랑 통신
- docker와 네트워크 인터페이스를 이어주는 것을 브릿지라 한다.
- docker 컨테이너가 docker proxy를 통해 docker0로 가서 docker0가 네트워크 인터페이스를 통해 인터넷 통신

-
Host
- Host OS가 속한 네트워크를 같이 사용하는것
- 브릿지와 다르게 docker 컨테이너가 docker0 없이 바로 네트워크 인터페이스로 가서 인터넷 통신이 된다.

-
None
- 네트워크에 연결 안함. 즉, NAT,IGW가 연결되지 않은 private subnet
- 데이터베이스에서 주로 사용
-
Overlay
- 여러 호스트끼리 같은 네트워크로 공유,클러스터링 환경에서 주로 사용
- 클러스터링이란 여러 pc를 두고 같은 서비스를 작동시키고 다 묶는 것, 장점은 여러 자원을 한번에 쓰고 가용성이 좋음, 서버끼리 통신하기 위한 overlay망을 통해 통신
- 위에 overlay 그림 아래 클러스터링 그림

-
3rd-party plugins
- 누군가가 만든 애플리케이션을 통한 네트워킹
docker networking 생성 방법
- network라는 커스텀 객체를 생성해서 연결
- 미리 만들어져있는 기본 네트워크에 연결
실습
- bridge
- docker network create -d bridge world-bridge
- docker run -d -p 8081:80 --network world-bridge httpd:2.4.62
- docker inspect [docker id]로 확인하면 network쪽에서 world-bridge쪽에 연결된것을 확인 가능
- 찾기 어려우면 docker inspect [id] --format '{{ json .NetworkSettings.Networks(or 원하는거) }} ' | jq로 원하는 내용 쉽게 볼 수 있음
- 같은 브릿지 안에 있으면 이름으로만 통신 가능
- host
- docker run -d --network host nginx:latest
- inspect로 확인 시 ip가 없음
- none
- docker run -d --network none nginx
- 인터넷이 안되기에 apt update 안됨
docker images
- 도커 이미지 구조
- 왜 layer 형태인가?
- 이미지들에서 중복되는 영역을 하나의 레이어를 통해 관리하여 공간,시간 효율을 얻기 위함
이미지 만들기
- docker image는 코드 형태로 dockerfile을 작성해서 만듬
- 기초 문법 알기
- 대표적인 문법
- FROM: 기본 이미지에서 새로운 빌드 단계를 만듭니다.
- ADD: 로컬 또는 원격 파일과 디렉토리를 추가합니다.
- WORKDIR: 작업 디렉토리를 변경합니다.
- COPY: 파일과 디렉토리를 복사합니다.
- ENTRYPOINT: 기본 실행 파일을 지정합니다.
- ENV: 환경 변수를 설정합니다.
- RUN: 빌드 명령을 실행합니다.
- CMD: 기본 명령을 지정합니다.
26일차 문제풀이
docker 문제
