Docker 정리

Docker 란?

2013년에 등장한 새로운 컨테이너 기반 가상화 도구

계층화된 파일 시스템을 사용해 가상화된 컨테이너의 변경사항을 추적 및 관리

컨테이너 특정 상태를 항상 보존해두고, 필요할 때 언제 어디서나 실행할 수 있도록 도와주는 도구


기존 가상머신

가상 머신은 격리된 환경을 구축해준다는 데서 매력적

실제 배포용으로 쓰기에는 성능 면에서 불리한 도구

운영체제 위에서 또 다른 운영체제를 통째로 돌리는 구조라 리소스를 비효율적으로 활용하게 됨

Docker

어느 플랫폼에서나 재현가능한 어플리케이션 컨테이너를 만들어주는 것을 목표함

LXC(리눅스 컨테이너)라는 개념에서 출발함으로써 특정 리눅스 배포판에서 사용 가능

가상 머신이라고 하기보다는 격리된 환경을 만들어주는 도구

컨테이너와 이미지의 차이와 Dockerfile 만든 법 등을 익히는게 중요함

Docker에서 말하는 장점들

  • 유연성 (Flexible) : 가장 복잡한 애플리케이션조차도 컨테이너화할 수 있습니다.
  • 경량 (Lightweight) : 컨테이너는 호스트 커널을 활용하고 공유합니다.
  • 교환 가능 (Interchangeable) : 업데이트 및 업그레이드를 즉시 배포 할 수 있습니다.
  • 휴대성 (Portable) : 로컬로 구축하고, 클라우드에 배치하고, 어디서나 실행할 수 있습니다.
  • 확장성 (Scalable) : 컨테이너 복제본을 늘리고 자동으로 배포 할 수 있습니다.
  • 스태킹 (Stackable) : 서비스를 세로 및 가로로 쌓을 수 있습니다.


Docker 제품군

Community Edition (CE)

Docker를 시작하고 컨테이너 기반 앱을 실험하려는 개발자 및 소규모 팀에 이상적 (무료)

두 가지 업데이트 채널을 가짐

  • Stable : 분기마다 안정적인 업데이트 제공
  • Edge : 매월 새 기능 제공

Enterprise Edition (EE)

업무용 응용 프로그램 제작, 배송 및 실행하는 엔터프라이즈 개발 및 IT팀을 위한 설계 (유료)

Docker CE와 EE 간 비교 이미지 (출처: Docker Docs, https://docs.docker.com/install/)

지원 플랫폼

Desktop

Cloud

Server

Docker EE

Docker CE

Docker 설치하기

Ubuntu의 경우 Docker CE설치시

OS requirements (18년 3월 22일 기준)

Docker CE는 아래 버전 중 하나의 64비트 버전이 필요함

  • Artful 17.10 (Docker CE 17.11 Edge and higher only)
  • Xenial 16.04 (LTS)
  • Trusty 14.04 (LTS)

Docker CE는 Ubuntu에서 x86_64armhfs390x (IBM Z), and ppc64le (IBM Power) 아키텍쳐를 지원함

(ppc64le and s390x limitations: IBM Z 및 Power 아키텍쳐 패키지는 Ubuntu Xenial 이상만 사용 가능)

Docker CE 설치

  • Docker repositories를 설정 후 설치
  • DEB 패키지 다운로드 후 수동 설치
  • 스크립트를 사용하여 설치

Docker Storage를 설정 후 설치 방법

## 패키지 업데이트
    $ sudo apt-get update
    ...
    ## HTTPS를 통해 repository를 사용할 수 있도록 패키지 설치
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
    ...
    ## Docker 공식 GPG 키 추가
    ## Key fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 확인
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    $ sudo apt-key fingerprint 0EBFCD88
    pub   4096R/0EBFCD88 2017-02-22
    Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
    uid                  Docker Release (CE deb) <docker@docker.com>
    sub   4096R/F273FCD8 2017-02-22
    ...
    ## stable repository 사용시 아래 커맨드 추가
    ## arch 값을 amd64, armhf, ppc64el, s390x 등으로 맞춰서 사용
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
    ...
    ## 패키지 업데이트
    $ sudo apt-get update
    ...
    ## 옵션 1. Docker CE 최신 버전 설치
    $ sudo apt-get install docker-ce
    ...
    ## 옵션 2. Docker CE 특정 버전 설치
    $ apt-cache madison docker-ce
    docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    $ sudo apt-get install docker-ce=<VERSION>
    ...
    ## hello-world 이미지를 실행하여 Docker CE가 올바르게 설치되었는지 확인
    $ sudo docker run hello-world

다른 OS에서 Docker 설치

Docker 제거

Docker CE 제거

Docker CE 패키지 제거

$ sudo apt-get purge docker-ce

Image, Container, Volume, 사용자 정의 구성파일 등은 자동으로 제거 안됨.

모든 데이터를 삭제하려면 아래처럼 실행

$ sudo rm -rf /var/lib/docker

Docker Image

이미지는 추상적인 개념이며, 이미지를 기반으로 생성된 컨테이너가 실행됨

이미지는 코드, 런타임, 도서관, 환경 변수 및 구성 파일 등 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 실행 가능한 패키지

Docker Image 관련 명령어

docker images

현재 시스템에서 사용 가능한 이미지 리스트

$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    hello-world         latest              f2a91732366c        4 months ago        1.85kB

docker pull 

이 명령어를 사용하면 docker.io의 공식 저장소에서 이미지를 다운로드

공식 저장소에 있는 이미지 정보들은 https://hub.docker.com/explore/에서 확인 가능

$ docker pull ubuntu
    Pulling repository ubuntu
    04180f9bd8a6: Download complete
    1e548c932d40: Download complete
    ...

Docker Container

컨테이너는 기본적으로 리눅스에서 실행되며, 다른 컨테이너와 호스트 시스템의 커널을 공유

더 많은 메모리를 사용하지 않고 개별 프로세스를 실행하여 가볍게 만듬

Docker Container 관련 명령어

docker run

특정 이미지로 컨테이너 생성 및 실행

$ docker run -i -t ubuntu:12.04 /bin/bash
    root@8bfd70fe7392:/#

docker ps

실행 중인 컨테이너들을 출력 (전체 볼때는 docker ps -a)

$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
    0fae5858c9c0        ubuntu:12.04        /bin/bash           8 seconds ago       Up 7 seconds

    PORTS               NAMES
    sleepy_nobel

docker start <Container name/id>

생성되어 있는 컨테이너를 실행

$ docker start a37f1348c4c4
    a37f1348c4c4
    $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
    a37f1348c4c4        hello-world         "/hello"            25 minutes ago      Up 7 seconds

    PORTS               NAMES
    sleepy_nobel

docker stop <Container name/id>

실행 중인 컨테이너를 정지

$ docker stop a37f1348c4c4
    a37f1348c4c4
    $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
    a37f1348c4c4        hello-world         "/hello"            25 minutes ago      Exited(0) 25 minutes ago

    PORTS               NAMES
    sleepy_nobel

docker exec -it <Container name/id>

실행 중인 컨테이너에 진입시

쉘이 안떠있는 컨테이너일 경우 : docker exec -it <Container name/id> /bin/bash

$ docker attach e2af613
    root@e2af61348652:/#

docker stop $(docker ps -a -q)

실행 중인 컨테이너들 전체 정지시

$ docker stop $(docker ps -a -q)
    a37f1348c4c4
    e2af6134a1s2
    ...

참고 자료

Docker 공식 문서 : https://docs.docker.com/

nacyout님의 "도커(Docker) 튜토리얼:깐 김에 배포까지" : http://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/

(18년 3월 22일 기준 정리)


신논현역 주변 후쿠오카 함바그 집입니다.

지도 크게 보기
2018.3.18 | 지도 크게 보기 ©  NAVER Corp.


지나다니다 보면 행사 입간판이 자주 붙는 곳이기도 합니다.

저는 7천원짜리 행사메뉴로 먹었습니다.

계란을 밑에 깔고 고기덩어리에 토핑을 얹어 나오는 형태입니다.

밥과 국물 그리고 간단한 반찬과 소스가 곁들여 나옵니다.

고기는 조금씩 덜어 동그란 돌판 위에 익혀서 먹으면 됩니다.

나름 고기 구워먹는 재미가 있지만, 귀찮아하시는 분도 있을 것 같네요.

맛있게 먹었지만, 그리 특색있거나 먼 곳에서 일부러 찾아갈 정도까진 아닌 것 같네요.


우리 동네에도 특색있고 맛있는 집이 생겼다.

봉천동 언덕배기 어딘가에 덮밥인봉천이라는 식당이 생겼네요.

지도 크게 보기
2018.3.18 | 지도 크게 보기 ©  NAVER Corp.


여러가지 덮밥을 파는 곳인데요.

아담한 가게에서 아기자기하게 주변 주민들 상대로 장사를 하시는 느낌이네요.

분위기에 한번 음식 맛에 한번 즐거움을 느끼게 되네요.

저희가 시킨 요리는 토시살 스테이크 덮밥(8,500원)과 명란 우삽겹 덮밥(7,000원)이었습니다.

여유가 필요할때 다시 찾고 싶은 맛집입니다.


+ Recent posts