[데이터 엔지니어링] Docker

Colacan·2022년 4월 11일
1

Docker란?

애플리케이션 실행환경을 코드로 작성가능하다.
OS를 격리화하여 관리한다.

Docker가 해결하는 문제들

  1. 환경표준화
    환경이 일정하지 않아서 생기기에 고려필요
    윈도우에서 개발한 애플리케이션에서의 경로는 \을 바탕으로 표현하고, Mac 이나 Linux에서 경로는 /을 바탕으로 표현한다.
    위 상황외에도 개발자들이 고려할 변수가 늘어난다.
  2. 수작업으로 환경을 일치시킬 경우
    동일한 OS환경을 유지할 경우 빨라진다.
    홈디렉토리와 같은 경우 사용자별로 다르기에 누군가는 실수를 하게 될 것이다.
    위 상황외에도 방화벽, 사용자권한, port설정등에서 변경이 필요하다.
  3. 리소스 격리성
    여러 IP를 사용하는 과정에서 생기는 방화벽충돌과 같은 여러 문제를 해결하는 방법
    마치 하나의 컴퓨터에서 여러개의 컴퓨터를 이용하는 것과 같다.
    가상머신, Docker의 방법이 있다.

가상머신 vs Docker

  1. 가상머신
    개발하는 환경을 이미지로 저장하고 Host OS 위에 게스트 OS를 띄운다.
  2. Docker
    Virtual Marchine만큼 견고한 격리성은 제공하지 않는다.
    리눅스 컨테이너를 이용한 기술이다.
    (리눅스 컨테이너는 위의 환경표준화, 수작업으로 생기는 문제 ,리소스 격리성을 모두 해결한다.)
    OS위에 다른 OS를 실행하는 것이 아니기에 가상머신보다는 좋은성능을 지닌다.

Docker에서 이용하는 리눅스컨테이너

리눅스 기반의 기술로 라이브러리와 어플리케이션을 모아서 서버처럼 구성한 것

  1. 프로세스의 구획화
    (특정 컨테이너에서 작동하는 프로세스는 컨테이너 안에서만 액세스)
    (컨테이너 안에서 실행되는 프로세스는 다른 컨테이너에 영향을 못 준다.)
  2. 네트워크의 구획화
    컨테이너 하나에 IP 주소가 할당
  3. 파일시스템의 구획화
    파일 시스템의 구획화로 명령,파일의 액세스를 제한한다.

Docker 이용 (Docker Image)

Docker Image의 이름은 레지스트리 계정, 레포지토리 이름, 태그로 구성된다

  1. 레지스트리
    도커 이미지가 관리되는 공간
    지정되지 않으면 Docker Hub가 기본 레지스트리
  2. 레포지토리
    레지스트리에서 Docker Image가 저장되는 공간
  3. 태그
    Docker Image를 설명하는 버전 정보
    지정되지 않으면 latest 태그를 붙인 이미지를 가져온다.

Docker 이용 (Docker Hub)

Docker Image를 찾거나, Docker Image의 사용방법을 확인할때 이용

  1. 레지스트리에서 이미지 or 레포지토리 pull
$ docker image pull docker/whalesay:latest
  1. 이미지 리스트 출력
$ docker image ls
  1. 이미지 실행
$ docker container run --name {컨테이너 이름} docker/whalesay:latest {호출할 내용} {넘겨질 파라미터}
  1. 컨테이너 리스트 출력
$ docker container ps -a
  1. 컨테이너 삭제
$ docker container rm {컨테이너 이름}
  1. 이미지 삭제
$ docker image rm docker/whalesay

그 외의 내용은 공식문서 참고
(https://docs.docker.com/engine/reference/commandline/container_run/)

profile
For DE, DA / There is no royal road to learning

0개의 댓글