Docker

김영환·2021년 1월 25일
0
post-thumbnail

Docker?

Docker는 가상화 기술이다. Docker 같은 컨테이너 가상화 기술은 hypervisor 가상화와 틀리게 OS의 커널 위의 공간(user space)에서 실행된다. 즉 완전히 독립적인 운영체제를 가상화 하는 것이 아니라 독립적인 user space를 가상화 한다고 생각하면 쉽다.
즉, 하나의 호스트 서버에서 여러 독립적 user space 인스턴스를 가상적으로 실행 할 수 있다.

장점

  1. 컨터이너 가상화 기술의 장점은 hypervisor 가상화 보다 훨씬 가볍기 때문에 빠르고 쉽게 독립적인 가상 환경을 실행시킬수 있다.
  2. hypervisor는 base OS와 가상화 OS 사이에 커널 시스템 호출을 연결 시켜주는 emulation layer가 필요한데 docker hypervisor 처럼 emulator가 필요없이 그냥 일반적인 API interface를 사용한다.
  3. 널리 퍼져있는 MSA(Micro Service Architecture)와 CI/CD에 아주 잘 어울리는 가상화 기술로서 각광을 받고 있다.

단점

  1. 독립적인 OS가 아닌 user space 가상화를 하는 형태이다 보니 운영체제가 전혀 틀린 호스트에서는 실행을 시킬수 없다. ex) window를 linux 호스트에서 실행시킬수 없다.
  2. 완전히 독립적인 운영체제 가상화가 아니다 보니 보안적인 측면에서 hypervisor 보다 약할수 밖에 없다.

Hypervisor 물리적인 서버에서 하나 혹은 그 이상의 독립적인 운영체제가 돌아가는 구조
즉, 물리적 서버 OS 위에 여러 다른 독립적인 OS가 가상적(virtually)으로 돌아가는 구조

docker 컨테이너?

도커의 전체적인 모습을 카세트 플레이어로 비유해보면 도커 이미지는 카세트 테이프입니다. 도커 데몬(서버)는 카세트 플레이어입니다. 이미지인 카세트 테이프를 카세트 플레이어에서 재생하는 동작 그리고 그로인해 나오는 결과물이 바로 컨테이너입니다.

docker aws ec2 배포

  1. 프로젝트 레파지토리에서 Dockerfile 생성,수정
  2. 이미지 빌드하기
  3. 로컬환경에서 실행시키기
  4. Dokcer push
  5. AWS EC2 인스턴스에 Docker install
  6. AWS EC2 에서 Docker pull / Docker 실행

1. 프로젝트 레파지토리에서 Dockerfile 생성,수정

2. 이미지 빌드하기

>  $ docker build -t [도커아이디]/이미지이름:[tag] .
ex) $ docker bulid -t ohwani/myproject:0.1 . 

❗️주의 저 마지막에 . 은 Dockerfile 이 있는 위치를 표시한 것 [필수]

빌드가 제대로 되었는지 알아보기 위해서 빌드된 이미지들을 확인해보자

$ docker images -a

3. 로컬환경에서 실행시켜 보기

> $ docker run -d -p [로컬포트]:[도커포트] [빌드한 이미지 이름]
ex)$ docker run -d -p 8000:8000 ohwani/twopointnine:0.1

명령어를 입력하면 해쉬값을 보여주고 컨테이너가 잘 실행이 되고 잇는지 확인하면 된다.

실행중인 컨테이너 확인하기
$ docker ps 

모든 컨테이너 확인하기
$ docker ps -a 

4. Docker push

AWS EC2 환경에서 도커를 사용하기 위해 GitHub와 비슷한 개념으로 해당 이미지를 push 한다.

도커허브에 로그인
$ docker login 

도커허브에 업로드
$ docker push[이미지 이름]

5. AWS EC2 인스턴스에서 이미지 받아오고 실행하기

혹시 AWS EC2 인스턴스에 Docker를 설치 하지 않았다면 해당 명령어를 순서대로 입력해준다.

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt update
$ apt-cache policy docker-ce

$ sudo apt install docker-ce

AWS EC2에 성공적으로 Docker를 설치했다면, 아까 업로드한 이미지를 EC2 환경에서 사용하기 위해 pull을 한다

6. AWS EC2 에서 Docker pull / Docker 실행

aws ec2 에서 로그인
$ sudo docker login

aws ec2 에서 도커허브 이미지 가져오기
$ sudo docker pull [이미지 이름]

해당 이미지를 확인하고 실행하기 위해서

aws ec2에서 이미지 실행
$ sudo docker run -d -p [PORT]:[PORT] [이미지 이름]

0개의 댓글

관련 채용 정보