본문 바로가기

Data Science/3. 데이터 엔지니어링

[n312]Docker

■ Key words

  ㆍDocker

  ㆍDocker Hub

  ㆍDocker Registry(strorage)

  ㆍDocker Image(static; programe)

  ㆍDocker Container(running; process)

  ㆍDocker Compose

 

■ 주요내용

  ㆍDocker : 프로그램 실행을 위해 Linux 환경을 쉽게 구성해주는 도구. 

                  App 실행환경을 코드로 작성하고, OS를 격리화하여 관리하는 기술.

     * 개발자와 사용자, 그리고 관리자가 같은 환경에서 프로그램을 사용할 수 있도록 도와줌.

     - 환경표준화

     - 수작업으로 환경 구성 일치화

     - 리소스 격리성 : 가상머신(Virtual Machine) / Docker

  ㆍLinux Container : 필요한 library와 App.을 모아 별도의 서버처럼 구성한 것. 

                            각 컨테이너가 네트워크 설정, 환경 변수 등 시스템 자원을 독립적으로 소유.

     - 프로세스의 구획화 : 특정 컨테이너에 작동하는 프로세스는 그 컨테이너 안에서만 접근 가능 /

                                 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향 불가

     - 네트워크의 구획화 : 컨테이너별  IP주소 할당

     - 파일시스템의 구획화 : 파일시스템이 컨테이너 내부에서 구획화 되어있어 명령이나 파일 등의 접근 제한 가능

  ㆍDocker CLI - Image 사용방법

     * Docker 주소 구성 : Registry_Account/Repository_Name:Tage

     - Docker Registry : image가 관리되는 곳 / 일반적으로 Docker Hub를 기본 registry로 설정 / 

                              Docker Hub / Private Docker Hub / 회사 내부용 Registry 등으로 구분 가능

     - Docker Repository : Docker Image가 저장되는 공간

     - Docker Tage : 일반적으로 Docker Image의 버전 정보 입력 / default는 latest

     - Docker Imgage : programe과 같이 저장되어 정적인 상태

     - Docker Container : image-instance가 활성화된 app. process(service / web)

  ㆍDocker CLI - Copy, Image 생성

     - CP(Copy) : 호스트와 컨테이너 사이에 파일을 복사(copy)

     - Volumn : 호스트와 컨테이너 사이에 공간을 마운트(Mount)

     * Mount : 저장공간을 다른 장치에서 접근할 수 있도록 허용하여

                   하나의 저장공간을 이용하는 것처럼 보이게 하는 작업

 

■ Session note

  ㆍ

 

■ 주요함수

  ㆍDocker 실습

# registry에서 image/repository 가져오기
docker image pull docker/whalesay:latest

# Docker image list 출력 / 용량 확인
docker image ls

# 이미지를 컨테이너로 실행하기
docker container run --name myName docker/whalesay:latest cowsay boo
# run : 실행명령어 
# --name : 옵션; 이름 지정 
# cowsay : command; 컨테이너에서 호출할 것 지정 
# boo : ARG.; command인 cowsay에 넘겨질 파라미터. 해당 단어를 고래가 말하게 됨

# 컨테이너 list 출력
docker container ps -a
# -a : 종료된 컨테이너를 모두 포함하여 출력 / default는 실행 중인 컨테이너만 출력

# myName이라는 컨테이너 삭제 / 컨테이너 명시할 때는 ps명령을 통해 확인 가능한 NAMES 혹은 CONTAINER ID 사용
docker container rm myName

# docker 이미지 삭제
docker image rm docker/whalesay
docker rmi

# docker 컨테이너 이름 명명 / 실행 / 실행 종료 후 삭제
docker container run --name my_name --rm docker/whalesay cowsay boo
# image가 없을 경우 자동적으로 이미지를 받아온 후(pull) 실행

# docker image 다운 / 컨테이너 실행 / 컨테이너 지우기
docker container run -it --rm danielkraic/asciiquarium:latest
# -it : 사용자와 컨테이너 간 인터랙션이 필요할 시 터미널 입력을 위한 옵션(-i, -t 동시 사용)
# ctrl + c로 종료 가능

# jupiter notebook 환경 구축
docker container run --name myjupyter --rm -p 10000:8888 jupyter/minimal-notebook

 

 

■ Reference

  ㆍCLI : https://youtu.be/hNdAQQeqkYU

  ㆍLinux 기본명령어 : https://youtu.be/Xcctef41-pE

  ㆍIP와 DNS, port : https://deftkang.tistory.com/119

 

[Network] 웹 브라우저와 웹 서버의 통신과정, IP와 DNS, 포트(port) 쉽게 이해하기

웹 브라우저와 웹 서버 deftkang.tistory.com 같은 URL을 입력하면 왜 해당 화면이 뜰까 그 이유는 복잡한 과정을 거친다. 이 과정을 단순화 하면 아래 그림과 같이 정리할 수 있다. ※ URL을 잘 모르시다

deftkang.tistory.com

  ㆍ서버 : https://youtu.be/R0YJ-r-qLNE

  ㆍDocker : https://docs.docker.com/engine/reference/builder/

 

Dockerfile reference

 

docs.docker.com

  ㆍPostgreSQL in Docker : https://hub.docker.com/_/postgres

 

Postgres - Official Image | Docker Hub

Get more out of Docker with a free Docker ID Sign up for a Docker ID to gain access to all the free features Docker has to offer, including unlimited public repositories, increased container image requests, automated builds, and much more. Sign Up ✕

hub.docker.com

  ㆍData Volumn : https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A5%A8_(%EC%BB%B4%ED%93%A8%ED%8C%85) 

 

볼륨 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

컴퓨터 운영 체제 환경에서, 볼륨(volume) 또는 논리 드라이브(logical drive)는 하나의 파일 시스템을 갖춘 하나의 접근 가능한 스토리지 영역으로, 일반적으로(꼭 필수는 아니지만) 하드 디스크의 단

ko.wikipedia.org

  ㆍDocker와 Data Volumn : https://www.joinc.co.kr/w/man/12/docker/Guide/DataWithContainer

 

도커 컨테이너 데이터 볼륨 관리

백업, 복구, 마이그레이션

www.joinc.co.kr

 

 

'Data Science > 3. 데이터 엔지니어링' 카테고리의 다른 글

[n322]python 활용(2)  (0) 2021.07.17
[n321]Python 활용(1)  (0) 2021.07.17
[n314]SQL(Structured Query Language)(2/2)  (0) 2021.07.13
[n313]SQL(Structured Query Language)(1/2)  (0) 2021.07.12
[n311]개발환경  (0) 2021.07.09