(리눅스) 도커

인프라(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 우분투:최신

  • 컨테이너 이미지 삭제