도커도커 개념정리

hyeok2·2023년 7월 17일
0

linux

목록 보기
5/10

1. 도커란?

리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

  • 도커 프로젝트
    • Docker Compose
    • Private Registry
    • Docker Machine
    • Kitematic
    • Docker Engine
    • 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트
    • 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 핵심이 되는 것은 도커 엔진이다.

가상머신과 도커 컨테이너

가상머신

  • 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에 생성해 사용하는 방식
  • 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 머신에 우분투, CentOS등의 운영체제가 설치
  • 하이퍼바이저에 의해 생성되고 관리되는 운영체제는 게스트 운영체제라고 하고, 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당 받아 사용
  • 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생함
  • 또한 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기가 큰 단점이 있음

도커 컨테이너

  • 도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없음
  • 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 매우 작음

도커의 장점

  • 애플리케이션의 개발과 배포가 편하다.
    • 컨테이너 내부에서 여러 작업을 마친 뒤 이를 운영 환경에 배포하려고 한다면, 해당 컨테이너를 도커 이미지라고 하는 일종의 패키지로 만들어 운영 서버에 전달하기만 하면 된다
  • 여러 애플리케이션의 독립성과 확장성이 높아진다.
    • 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식을 모놀리스 애플리케이션이라고 한다.
    • 모놀리스는 소규모 서비스에는 적합하지만 확장성과 유연성은 포기해야 한다는 단점
    • 모놀리스를 대체할 수 있는 방식이 마이크로서비스 구조
    • 컨테이너는 마이크로서비스 구조에서 가장 많이 사용되고 있는 가상화 기술이다.

도커의 기본 단위 : 이미지 / 컨테이너

  • 도커이미지
    • 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상머신을 생성할 때 사용하는 iso 파일과 비슷한 개념
    • 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용
    • 이미지는 도커 명령어로 내려 받을 수 있으므로 별도로 설치할 필요는 없음
  • 도커 컨테이너
    • 아파치 웹, nginx, mysql, 하둡, 스파크등의 도커 이미지가 있다.
    • 이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성

2. 도커 설치

  • 도커 홈페이지에서 설치 https://www.docker.com/
  • 설치이후 명령프롬프트(cmd)에서 docker를 검색해보면 관련된 사항들이 출력된다.

  • docker run -it —name 도커이름 ubuntu:18.04
    → docker라는 가상머신에서 도커이름 이름의 우분투 ver.18.04를 실행할 것이다.
  • 도커는 도커허브라는 사이트에서 패키지를 다운받아 와서 쉽게 실행가능하다.
    https://hub.docker.com/
  • 분석환경을 도커이미지로 담은 다음 도커이미지로 가져가면 설치가 간편해진다.

도커에서 파이썬 실행

  • 도커허브에서 python3는 없기 때문에 아나콘다를 설치하여 파이썬을 실행해야한다.
  • 아나콘다는 무겁기때문에 미니콘다를 설치한다.

docker 에서 미니콘다 설치하는 방법

  1. apt update : 시스템 패키지 관리자에 대한 패키지 목록을 업데이트
  2. apt install wget : wget 패키지를 설치
    wget 패키지는 웹에서 파일을 다운로드하는데 사용되는 유틸리티이다.
  3. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh : wget을 사용하여 Linux용 미니콘다3의 최신버전을 다운로드 (sh는 쉘스크립트 파일)

설치된 파일 확인법

  • ls를 입력해보면 현재 설치된 파일이 나온다.
  • ll도 현재 설치된 파일들을 보여주는데 ls와 ll의 차이는 정렬의 차이인듯하다

미니콘다에서 파이썬 접속

  1. 먼저 미니콘다로 접속해야한다.
    cd ~/miniconda3
  2. 미니콘다에 파이썬이 있는지 확인
    bin
    ./python
  3. 파이썬 유무를 확인했다면 나가자.
    exit()
    ctrl + d → 컨테이너 종료

  • 웹배포시 도커를 사용하면 시간 단축 및 편의성이 엄청나다.
    docker run -it --name <원하는 실행이름> -p 9000:8888 ubuntu:18.04
    도커를 실행하는데 name은 <원하는 실행이름>로 설정한다.
    포트는 9000번과 8000번을 이어준다.

각 프로그램별로 사용하는 포트가 나눠져 있는편이다.

  • 8888 : 주피터 노트북
  • 3306 : mysql
  • 1221 : oracle
  • 27017 : 몽고db
  • 8080 : 에어플로우 등

  • apt update 를 실행해주고 wget 과 vim을 설치한다.
  • apt install
  • wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    위치가 잘못되거나 권한 때문에 오류가 발생하는 경우가 많다.
    따라서 내가 누군지와 나의 위치를 확인자주 해주는게 필요하다.
  • 사용자 확인 whoami
  • 현재 위치 확인 pwd
  • 현재 폴더의 파일 목록 ls-al

sh파일 실행하는 방법

  • chmod +x ./Miniconda3-latest-Linux-x86_64.sh : 권한을 추가해준다.
  • ./Miniconda3-latest-Linux-x86_64.sh
  • ch ./Miniconda3-latest-Linux-x86_64.sh

yes를 다해준다.

  • vim ~/.bashrc

  • 도커를 껐을때는 attach를 이용하여 재접속할 수 있다.

  • export PATH=/root/miniconda3/bin:$PATH를 사이에 적어놓는다.

  • :wq 로 저장후 나가기하기

업로드중..

파이썬 설치 완료

pip intsall jupyter

파이썬이 설치되었기 때문에 주피터 설치가 가능해짐.

주피터 노트북 파일을 생성.

환경파일이다.

빔으로 열어보면 엄청 길다.

:q로 나간다.
온라인으로 하면 패스워드가 필요하다.
리눅스 정책상 패스워드는 쳐도 보이지 않는다.
1. ipython 입력
2. from notebook.auth import passwd 패스워드 모듈을 임포트
3. passwd() 패스워드를 설정한다.

비밀번호 텍스트로 저장해놓자…
exit()
수정하는 부분은 주석을 해제해야한다.
vim /root/.jupyter/jupyter_notebook_config.py

주석 해제

명령어 : 136

allow_origin = "*"

명령어 : 469

위에서 복사한 password 를 붙여넣는다.

명령어 : 450

c.NotebookApp.notebook_dir = '/root/workspace/'

458

c.NotebookApp.open_browser = False

ctrl + c / y 를해서 나와주고
jupyter notebook --ip=0.0.0.0 --allow-root
를 입력

뭔가 오류가 있는지 비밀번호 설정이 안되어있었다.
token을 활용하여 아래 사이트에서 다시 비밀번호를 설정해준다.

openpose라는 모듈 사용하면 굿
openpose-docker를 제공한다.

profile
땅을 파다보면 흙과 물을 보겠지만, 코드를 파다보면 답이 보일것이다.

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘봤습니다. 좋은 글 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기