인프라(Infra) : DB 엔진, OS, 응용 네트워크 등이 모두 설정되어 있음
기존 인프라 구성
- OS 설치(리눅스, 윈도우)
- 애플리케이션 설치
- 실행 파일 업로드 및 사용자 관리
2세대 → 이미지
- 호스트 OS와 서비스 운영 환경의 분리
- 사용자가 필요로 하는 OS를 쉽고 빠르게 배포
3세대 → 클라우드 환경
도커 컨테이너
컨테이너(컨테이너): 운영체제가 통일되고 그 위에 나머지 필요한 부분만 번들로 묶어 가볍게 가상화
애플리케이션 동작에 필요한 요소(실행 파일, 애플리케이션 엔진 등) 패키징 및 격리 기술
전체 인프라를 빠르고 쉽게 관리
가상 머신 대 도커

도커
2013년 3월, dotCloud 창립자 Solomoon Heike가 PyCon 컨퍼런스에서 발표
기존 Linux 컨테이너 기술 활용
컨테이너로 애플리케이션을 더 쉽게 사용할 수 있게 해주는 오픈 소스 프로젝트입니다.
가상 머신보다 가볍고 리소스를 보다 효율적으로 사용할 수 있으므로 성능이 향상됩니다.

컨테이너 기반 가상화 시스템
가상 환경은 분석가가 각 모듈에 대해 서로 다른 버전을 사용해야 할 때 유용합니다.
Docker는 가상 환경의 개념에서 확장된 플랫폼으로, 각 모듈마다 서로 다른 버전뿐만 아니라 각 프로그래밍 버전과 개발 환경 자체를 독립된 공간으로 관리합니다.
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼으로 각 컨테이너 내에서 프로그램, 데이터베이스, 서버 등을 다양하게 구성할 수 있으며 각 컨테이너를 독립적으로 사용할 수 있다.
가상화 가상화
실제로 존재하지 않지만 존재하는 것처럼 보이게 만드는 것
ex) 하나의 물리적 서버를 여러 개의 가상 서버로 분할하면 각각을 여러 사람에게 임대할 수 있습니다.
→ BUT 한 대의 컴퓨터에서 여러 독립 운영 체제를 실행하는 가상화에 문제가 있음
→ 한 대의 컴퓨터에서 한 번에 여러 운영 체제를 실행하면 속도가 느려짐
⇒ 도커(Docker) 사용 시 여러 독립 운영 체제를 실행할 필요 없음 X
도커 이미지
Docker 이미지의 실행 파일, 라이브러리, 소스 등을 포함한 OS 실행 파일
Docker 컨테이너는 이미지를 실행하는 OS 프로세스를 의미합니다.
도커 엔진 설치
# apt-get 업데이트
- 현재 패키지를 관리하는 저장소의 최신 버전으로 업데이트
# apt-get install ca 인증서 \
곱슬 곱슬하다 \
gnupg\
lsb 릴리스
- APT 패키지 관리자는 HTTPS를 통해 Docker 엔진 관련 리포지토리를 추가 및 업데이트하는 데 필요한 패키지를 설치합니다.
# 컬 -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- Docker 공식 GPG 키 추가
GPG(GNU 프라이버시 카드)
개인과 기계 간에 교환되는 메시지 파일을 암호화하거나 서명을 추가하여 파일 변조 방지
# echo \ “deb (arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg) https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) 안정” | sudo 티 /etc/apt/sources.list.d/docker.list > /dev/null
# apt-get update (저장소에 반영됨)
- Docker 저장소 등록
# apt-get install docker-ce docker-ce-cli containerd.io
- 도커 엔진 설치
도커 서비스 체크
# docker version (docker 버전 확인)
# docker info (도커 데몬 정보 확인)
# systemctl status docker (도커 데몬 상태 확인)
도커 기능 검사
# docker run hello-world
# 도커 이미지
- 도커가 정상적으로 설치되어 문제 없이 사용 가능한지 확인
Docker 컨테이너 이미지 다운로드
# docker search ubuntu (공식적으로 다운로드 가능한 우분투 이미지 확인)
- 도커 이미지 검색
# docker pull 우분투:최신
- docker pull(도커 허브에서 최신 우분투 이미지 다운로드)
# 도커 이미지
- docker image list (다운로드한 이미지 목록 출력)
도커 컨테이너 만들기
# docker run -i -t –name 안녕하세요 우분투 /bin/bash
# docker run (선택 사항) (컨테이너 이름) (이미지 이름) (bash shell )
# docker attach(컨테이너 이름)
- 컨테이너 만들기
| 옵션 | 설명 |
| -디 | 분리 모드(백그라운드 모드) |
| -피 | 호스트와 컨테이너의 포트 연결(포워딩) |
| -V | 호스트와 컨테이너의 디렉토리 연결(마운트) |
| -이자형 | 컨테이너에 대한 환경 변수 설정 |
| -이름 | 컨테이너 이름 지정 옵션 생략하면 docker는 이름을 임의로 지정합니다. |
| -rm | 컨테이너 프로세스 종료 시 컨테이너 자동 삭제 |
| -나 | –인터렉티브 표준 입력(STDIN) 활성화 컨테이너에 연결되지 않은 경우에도 표준 입력을 유지합니다. |
| -티 | 의사 tty 터미널과 같은 환경 만들기 |
| -그것 | -i와 -t를 동시에 사용하기 위한 옵션 |
| -링크 | 컨테이너를 컨테이너에 연결하기 위한 옵션 |
도커 컨테이너 확인
# docker ps (실행 중인 컨테이너 확인)
# docker ps -a (모든 컨테이너 확인)
- 실행 중인 컨테이너 확인
| 열 | 설명 |
| 컨테이너 ID | 컨테이너 생성 시 지정되는 임의의 컨테이너 ID (처음 12자리만 출력) |
| 영상 | 컨테이너 생성 시 사용하는 이미지 이름 |
| 명령 | 컨테이너가 시작될 때 실행할 명령 |
| 만들어진 | 컨테이너가 생성된 기간 |
| 상태 | 컨테이너 상태(UP: 실행 중, 종료됨: 중지됨, 일시 중지: 일시 중지됨) |
| 항구 | 컨테이너에서 열린 포트 및 호스트에 대한 연결 상태 |
| 이름 | 컨테이너 고유 이름, 중복되지 않음, 변경 가능 |
Docker 컨테이너 활성화
# docker start(컨테이너 이름)
# 도커 ps
- 시작 컨테이너
Docker 컨테이너 활성화
# 도커 중지(컨테이너 이름)
# 도커 ps
# 도커 ps -a
- 컨테이너 정지
# docker restart (컨테이너 이름)
# 도커 ps
- 컨테이너 재시작
Docker 컨테이너 정리
# docker rm (컨테이너 이름)
# 도커 ps 로 확인할 때 컨테이너가 up 상태이면 컨테이너를 중지한 후 삭제해야 합니다.
- 컨테이너 삭제
# 도커 rm `도커 ps -aq`
- 모든 컨테이너 삭제
도커 이미지 정리
# docker rmi 우분투:최신
- 컨테이너 이미지 삭제
