Docker(도커)

김도영·2022년 6월 10일
0
post-thumbnail

2013년에 등장한 Docker(도커)컨테이너 방식으로 쉽게 애플리케이션을 포장하고 실행할 수 있게 해준다. 즉, 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다는 것이다.

Docker의 장점

  1. 의존성 문제를 해결 해준다.
    예를 들어, 워드프레스(wordpress)라는 프로그램이 php라는 프로그램에 대헤 의존 관계를 가질 때, 특정 php버전을 요구하는 경우가 있다. 일반적으로, 한 컴퓨터에 여러 버전의 동일한 애플리케이션이 설치되지 않으므로, php의 의존 관계를 가진 다른 두 애플리케이션 중 하나는 제대로 된 실행이 보장되지 않는다. 컨테이너 기술은 이러한 문제를 해결할 수 있다. 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성하여 실행중인 애플리케이션의 어떠한 의존성도 공유하지 않고, 각자 고유의 의존성을 포함하고 있다. 이는 각 컨테이너가 철저하게 실행 환경이 분리되어 있기 때문이다.

  2. 개발과 배포 환경을 일치시킨다.
    개발이나 배포 부분에서 발생하는 문제는 특정 버전 이상의 Node.js나 특정 버전의 MySQL등을 각각의 개발자들이 얼추 비슷한 환경을 맞춰야 하는데 그 과정이 순탄하지 않다. 사소한 실수나 문제 해결에 많은 시간이 소모 될수 있다. Docker는 이러한 문제들을 해결해주는데, 도커가 실행중이라면, 어떠한 운영체제든 상관없이 즉시 설치하고 실행할 수 있다. 즉 모든 개발팀이 동일한 환경에서 개발을 진행할 수 있다.

  3. 수평 확장을 쉽게 해주고 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.
    우리가 매일같이 사용하는 글로벌 웹 서비스는 어마어마한 트래픽이 발생하는데, 더 많은 트래픽으로 인한 서버 증설에 컨테이너 기술을 접목하면 컨테이너의 가장 큰 장점인 실행 환경의 일치로 인해 아주 쉽게 활용될 수 있다.

Docker 키워드

컨테이너

컨테이너는 애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, Docker라는 기술 위에 실행 될 수 있도록 만든 애플리케이션 상자이다.

이미지

실행되는 모든 컨테이너는 이미지로부터 생성된다. 이미지는 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿으로, 이를 이용하여 바로 컨테이너를 생성할 수 있다. 이미지를 이용하면, 여러 개의 컨테이너를 생성할 수 있고 수평 확장이 가능하다.

레지스트리

이미지는 레지스트리에 저장된다. 대표적인 이미지 레지스트리로는 Docker hub, Amazon ECR이 있다. 도커 CLI에서 이미지를 이용하여 컨테이너를 생성할 때, 호스트 컴퓨터에 이미지가 존재하지 않으면, 기본 레지스트리로부터 다운받게 된다.

Docker 명령어

docker images : 현재 Hopt PC에 다운되어 있는 image들을 출력하는 명령어

docker pull [이미지 이름] : image 가져오기

docker rm [컨테이너 이름] : 컨테이너 삭제

docker container start : 컨테이너 시작

docker run [option] image[:TAG@DIGEST] [COMMAND] [ARG...] : 컨테이너 실행

option

  • -d : 백그라운드 모드
  • -p : 호스트와 컨테이너의 포트 연결(포워딩)
  • -v : 호스트와 컨테이너의 디렉토리 연결(마운트)
  • -e : 컨테이너에서 사용할 환경변수 설정
  • --name : 컨테이너 이름 설정
  • --rm : 컨테이너 종료시 자동으로 삭제
  • --it : -i와 -t를 동시에 사용한 것으로 터미널입력을 위한 옵션
  • docker container stop [컨테이너 이름] : 실행중인 컨테이너 중지

    docker container ps -a : 모든 컨테이너 조회

    docker container prune : 모든 컨테이너 삭제

    profile
    Blockchain Developer

    0개의 댓글