본문 바로가기
도커

도커 설치

by 베어그릴스 2022. 8. 2.
반응형

도커란 무엇인가?

도커는 컨테이너 기반의 가상화 플랫폼입니다. 부두에서 컨테이너를 옮기고 관리하는 직업인 docker 에서 따 온 이름에 걸맞게 컨테이너를 잘 다룰 수 있게 도와 주는 도구라고 할 수 있다.

 

개요

  • 도커의 개념과 사용하는 이유 그리고 도커의 특징에 대해 이해한다.

소개 및 배경

  • 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
  • 다양한 이유로 계속 바뀌는 서버 환경과 개발 환경 문제를 해결하기 위해 등장했다.
    • 툴 업데이트, 회사의 툴 사용 변경, 회사의 언어 정책 변경 등
  • 기존에 서버와 개발 환경이 변경되면 컴퓨터 셋팅(개발 환경) 등을 다시하거나 그 과정에서 발생하는 문제들과 같이, 여러모로 불편한 점이 많았다.
  • 도커가 등장하고 서버관리/개발 방식이(컨테이너) 완전히 편리하게 바뀌게 된다.

사용하는 이유

  • 도커 허브에 올라온 이미지와 docker-compose.yml의 설정으로 원하는 프로그램을 편안하게 설치가 가능하다.
    • 컨테이너를 생성하여 분리된 환경에 설치하므로 제거도 쉽다.
  • 하나의 서버(로컬 호스트)에 포트만 변경하여 동일한 프로그램을 실행하기도 쉽다.
    • 도커를 사용하지 않으면 환경변수나 경로 등의 충돌로 피곤하기 그지 없다.

서버관리 방식의 변화

  • 전통적인 서버관리 방식은 아래와 같이 각 단계별로 흐름이 있었고, 각 단계가 업데이트 되거나 어떤 문제가 발생하면 전체 흐름이 중단되는 문제가 있었다.

  • 도커 등장 이후 어떠한 프로그램도 컨테이너로 만들 수 있다.
    • 서로 다른 프로그램이더라도 컨테이너로 규격화되었음
  • AWS, Azure, Google cloud 등 어떤 환경에서도 돌아간다.

  • 가상머신과 비슷하게 생각할 수 있지만 비슷한점과 다른점이 있다.
  • 가상머신처럼 독립적으로 실행되지만, 가상머신보다 빠르고 쉽고 효율적이다.
    • 도커는 컴퓨터 자원을 그대로 사용한다. (가상머신은 독립 된 메모리를 할당받는 것으로 알고 있음)

도커의 등장

  • 기존에는 서버 환경에 대해 아래와 같이 관리했다.
    • 문서화
    • 상태관리도구 (인프라를 코드로 관리)
    • 가상머신
    • 자원격리 (프로세스, 파일, 디렉토리 가상으로 분리)
      • 리눅스의 기능을 (커널 격리) 이용하여 빠르고 효율적인 서버 관리
      • 그러나 사용하기 너무 어려워 구글과 같은 고급 회사에서만 사용했음
  • 도커가 등징하며 어렵고 복잡했던 기술을 사용하기 쉽게 만들었다.
    • 컨테이너 : 격리된 환경에서 작동하는 프로세스
    • 리눅스 커널의 여러 기술을 활용
    • 하드웨어 가상화 기술보다 가벼움
    • 이미지 단위로 프로세스 실행 환경을 구성

도커의 특징

  • 도커는 가상머신이 아니고 격리만 해주기 떄문에 성능상 하락이 없다. (성능 하락이 큰 VM과 다르다.)
  • 확장성과 이식성
    • 도커가 설치되어 있다면 어디서든 컨테이너를 실행할 수 있다.
    • 오픈 소스이기에 특정 회사나 서비스에 종속적이지 않다.
    • 쉽게 개발서버를 만들 수 있고 테스트 서버 생성도 가능하다.
  • 표준성
    • 도커를 사용하지 않는 경우, 각각의 언어로 만든 서비스들의 배포 방식은 모두 다르다.
    • 도커는 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포 과정이 동일해진다.
  • 이미지
    • 컨테이너를 실행하기 위한 압축파일과 같은 개념이다.
    • 이미지에서 컨테이너를 생성하기 떄문에 반드시 이미지를 만드는 과정이 필요하다.
    • Dockerfile을 이용하여 이미지를 만들고 처음부터 재현 가능하다.
    • 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소(허브)에 저장하고 운영서버에서 이미지를 불러와 사용한다.
  • 설정관리
    • 도커에서 설정은 보통 아래와 같이 환경변수로 제어한다.
    • MYSQL_PASS=password와 같이 컨테이너를 띄울 때 환경변수를 같이 지정한다.
    • 하나의 이미지가 환경변수에 따라 동적으로 설정파일을 생성하도록 만들어져야한다.
  • 자원관리
    • 컨테이너는 삭제 후 새로 만들면 모든 데이터가 초기화된다. (제거가 쉽다.)
    • 그러므로 저장이 필요하다면, 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3같은 별도의 저장소가 필요하다.
    • 세션이나 캐시를 memcached나 redis와 같은 외부로 분리한다.

VM이란(VM과 Docker의 차이)

Vm과 Docker의 차이점은 무엇일까?

물리적 자원(한대의 PC)에서 충돌이나는 프로그램과 환경설정을 돌려야하는 상황이라면, Vitrual Machine 을 이용해 새로운 OS를 설치해 자원을 나누어서 사용했다.

기존의 가상화 방식은 주로 OS를 가상화 하였지만, 우리에게 익숙한 VMware나 VirtualBox같은 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다.

가상화 방식에는 전가상화, 반가상화(뭔지 정확히 머름ㅎ)가 있는데 어째든 추가적인 OS를 설치하여 가상화하는 방법이기때문에 , 성능상의 문제가 있을 수 밖에 없습니다.


도커는 이러한 문제점을 해결하기 위해 프로세스 격리 방식을 이용하는 것입니다.
리눅스에서는 이 방식을 리눅스 컨테이너라고 하고 단순히 프로세스르 격리시키기 때문에 가볍고 빠르게 설치하고 실행할 수있습니다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 하기때문에 성능적으로 거의 손실이 없습니다.

 

도커가 가져온 변화(정리)

  • 클라우드 이미지보다 관리하기 쉽다.
  • 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능 저하가 거의 없다.
  • 복잡한 기술(namespace, cgroups, network, …)을 몰라도 사용할 수 있다.
  • 이미지 빌드 기록이 남는다.
  • 코드와 설정으로 관리하여 재현 및 수정 가능하다.
  • 오픈소스이므로 특정 회사 기술에 종속적이지 않다.
  •  

 

도커다운로드

https://docs.docker.com/get-docker/

 

Get Docker

 

docs.docker.com

윈도우도커설치

 

1. 윈도우버전이 윈도우7 이상이여야 함

 

2. 컴퓨터 하드웨어가 가상화 지원해야 함

 

- 작업관리자 -> 성능 -> 가상화 : 사용

가상화 지원이 안될 경우 하드웨어가 가상화를 지원하지 않는 경우 일 수도 있지만 컴퓨터 BIOS에서 가상화가 꺼져 있어 사용이 불가능한 경우도 있습니다.

BIOS에서 가상화(Virtualization) 관련 옵션이 있는지 확인하여 ON으로 설정하여 주면됨

 

바탕화면에도 고래모양의 아이콘이 생깁니다.

설치가 완료 되면 고래 모양 아이콘이 생깁니다.

작업표시줄에 고래 모양에 마우스 오른쪽 버튼을 누른 후 Kitematic를 클릭하면

 

도커툴박스가 다운로드 받아집니다.

 

처음 도커 설치시 아이디가 없으므로 아이디 생성 후 로그인해 줍니다.

 

도커실행

압축을 푼 도커 툴박스

 
 
 

폴더 안에 Kitematic.exe를 클릭하면

 
 
아래와 같은 화면이 나옴
 

윈도우에서는 무엇 때문인지 몰라도 툴박스에서 검색해서 설치가 안됨..고로 CLI툴을 이용하여

 

이미지를 검색후 설치하여야 함.

 

아래 DOCKER CLI를 클릭

 
 
클릭하면 Windows powershell이 실행됩니다.
 

도커가 정상적으로 설치가 되었다면

 

파워쉘에 입력

RUN docker

도커를 설치 했다면 이미지를 검색하여 다운로드 받습니다.

 

도커 이미지 검색

1. docker search ubuntu

 

이미지 다운로드

 

아래는 ssh가 설치된 우분투버전의 이미지입니다.

 

docker pull [옵션] <이미지명>[:태그명]

- docker pull rastasheep/ubuntu-sshd

 

컨테이너 상태 확인

docker ps -a

처음 컨테이너 생성후 sshd 접속

#$ sudo docker run -d -P --name 컨테이너이름 rastasheep/ubuntu-sshd:14.04

 

 

SSH 포트검색

docker port 컨테이너이름 22

 

SSH 접속

$ ssh root@localhost -p 32768

 

명령어

컨테이너 검색 

docker ps -a

 

컨테이너 시작

docker start 컨테이너아이디

 

컨테이너 접속

docker attach 컨테이너아이디

 

도커 이미지 검색

docker images -a

 

도커 이미지 삭제

sudo docker rm 49533628fb37

 

다운로드할 이미지 검색

sudo docker search ubuntu

 

이미지 다운로드

docker pull [옵션] <이미지명>[:태그명]

- docker pull rastasheep/ubuntu-sshd

 

컨테이너 생성후 shell 접속

docker run <옵션> <이미지 이름> <실행할 파일>

- docker run -i -t --name ubuntu_test ubuntu bash

 

도커 컨테이너 커밋

docker commit 컨테이너 아이디 이미지 아이디

 

 

컨테이너사용 명령어

옵션설명

-ddetached mode 흔히 말하는 백그라운드 모드

-p호스트와 컨테이너의 포트를 연결 (포워딩)

-v호스트와 컨테이너의 디렉토리를 연결 (마운트)

-e컨테이너 내에서 사용할 환경변수 설정

-name컨테이너 이름 설정

-rm프로세스 종료시 컨테이너 자동 제거

-it-i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션

-link컨테이너 연결 [컨테이너명:별칭]
반응형

댓글