kyo
Hyo's Inside
kyo
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Computer Science (1)
    • 42Seoul (6)
    • Algorithm (9)
      • Theory (5)
      • Daily PS (4)
    • Language & Framework (12)
      • Spring (0)
      • Java (11)
      • React (0)
      • C&C++ (0)
      • Node.js (1)
    • Dev (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 슬랙
  • minitalk
  • 알고리즘
  • slack
  • philosophers
  • Algorithm
  • Greedy
  • LEMP
  • 도커
  • 슬랙봇
  • mutex
  • 42SEOUL
  • 백준
  • sigaction
  • docker
  • Nginx
  • 참고자료 : 이것이 코딩테스트이다 with 파이썬
  • 빅오
  • 세미나
  • 자바

최근 글

티스토리

kyo

Hyo's Inside

[Docker] 🐳 도커란?
Dev

[Docker] 🐳 도커란?

2021. 3. 31. 21:32

1. Docker 란?

도커 로고

 

Docs에서 말하는 Docker는 클라우드 또는 온-프레미스로 실행될 수 있는 이식 가능하고 문제를 스스로 해결할 수 있는 컨테이너로서 애플리케이션 배포를 자동화하기 위한 오픈 소스 프로젝트입니다. 라고 설명하고 있습니다.

 

쉽게 말하면 도커는 애플리케이션을 컨테이너 기반 배포 및 공유하는 오픈 소스 가상화 플랫폼입니다. 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 도커는 2013년 파이콘에서 처음 소개되어 현재까지 많은 기업에서 사용되고 있습니다. 왜 도커를 사용하는지에 대해 알아보기 위해 도커의 여러 개념에 대해 알아봅시다.


 

🐳 컨테이너(container) 란?

 

컨테이너는 애플리케이션 또는 서비스와 그에 해당하는 구성이 컨테이너 이미지로 패키지되는 소프트웨어 개발 방법입니다. 

 

 

 

 

위의 그림처럼 각 컨테이너는 애플리케이션 또는 서비스를 실행할 수 있습니다. VM은 os를 포함하고 있어 os가 두개가 되지만 컨테이너는 실행하려는 os에 Docker Engine이 올라가 컨테이너를 구축, 시작 또는 중단하는 데 사용할 수 있는 간단한 명령 세트를 제공합니다. 

 

하드웨어를 가상화하고 운영체제를 가상화 하는 곳 자체가 없기 때문에 메모리 접근 속도, 파일시스템 사용 속도, 네트워크 속도 등에서 VM에 비해 월등히 빠른 속도를 가집니다.

 

 

 

 


 

🐳 도커 이미지(image) 란?

Docker 이미지는 컨테이너를 정의하는 읽기 전용 템플릿입니다. 이 이미지에는 코드에 필요한 라이브러리 및 종속성에 대한 정의를 비롯해 실행되는 코드가 포함되어 있습니다. 

Docker 컨테이너는 인스턴스화(실행한 상태)가 된 Docker 이미지가 됩니다. 

도커이미지는 hub.docker.com/에서 배포 및 다운을 받을 수 있습니다

 

 

Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 

 


🐳 도커 설치

이제 도커를 설치해보겠습니다.

www.docker.com/products/docker-desktop

 

Docker Desktop for Mac and Windows | Docker

Learn why Docker Desktop is the preferred choice for millions of developers building containerized applications. Download for Mac or Windows.

www.docker.com

mac os 와 windows 는 위의 도커홈페이지에서 설치 가능합니다.

 

리눅스에서 설치는 밑의 명령어로 설치 가능합니다.

 

curl -fsSL https://get.docker.com/ | sudo sh

 

 


 

🐳 Dockerfile

 

도커파일로 이미지 만들기 (Dockerizing)

도커파일 명령어에는 아래와 같은 것들이 있습니다.  

 

NAME Description ex)
FROM 사용할 이미지를 지정하는 명령어.
 :뒤에 특정 버전을 지정하여 사용할 수 있다.
FROM ubuntu:18.04 
FROM node
RUN 내려받은 이미지에 설치할 패키지 또는 shell 명령어를 입력할 수 있다. RUN npm install -g typescript:[version]
EXPOSE 실행한 container외부에 노출할 포트를 지정하는 명령어 EXPOSE 8080
ENV 환경변수를 지정하는 것으로 파일내부에서 변수처럼 활용이 가능 ENV test 123
WORKDIR cd의 명령어와 비슷합니다. RUN과 CMD과 같은 명령어가 실행될 이미지 내부에 위치를 지정해주는 명령어 WORKDIR /app/
ADD 빌드 중 호스트의 디렉토리에서 파일을 가져와서 이미지에 파일을 더하는 것.  빌드되는 디렉토리 밖에 위치하는 파일들은 가져오지 않는다. ADD test.txt /
ENTRYPOINT 컨테이너를 실행했을때 실행할 명령. 도커파일에서 한번만 사용가능 ENTRYPOINT ["npm", "run", "serve"]
CMD docker run 실행 시 사용할 default 명령을 설정 CMD ["npm", "run", "serve"]
VOLUME  호스트의 디렉토리를 docker 컨테이너에 연결하는 명령어 VOLUME ["/data", "/var/log"]
USER 해당 docker 이미지를 실행할 user를 지정하는 명령어 USER user
USER [uid]:[gid]
LABEL 이미지에 라벨을 다는 명령어 LABEL "abcd@gmail.com"
ARG 도커파일 빌드시에 설정하는 옵션들을 지정할 수 있는 명령어 ARG arg1
ARG arg2=value

 

 


 

🐳 도커 주요 명령어

 

Docker build 명령어

docker build [OPTIONS] PATH | URL | -

 

options description
-t, --tag -t [저장소 이름] / [이미지 이름] : [태그] 설정

 Docker 실행 명령어

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

 

options description
-d detached mode, 보통 데몬 모드라고 부르며 컨테이너가 백그라운드로 실행
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
--name 컨테이너 이름 설정
-e, --env 컨테이너 내에서 사용할 환경변수 설정
-v 호스트와 컨테이너의 디렉토리를 연결(마운트)
--it -i -t를 동시에 사용한것으로 표준 입력(stdin)을 활성화, 터미널 입력을 위한 옵션
--rm 프로세스 종료시 컨테이너 자동 제거
--link 컨테이너 연결 [컨테이너 명 : 별칭]

이미지 목록 보기

$ docker images

이미지 검색

$ docker search [이미지 이름]

이미지 받기

$ docker pull [이미지 이름]:[버전]
  • 버전을 latest 로 쓰면 최신 버전으로 받을수 있습니다.

이미지 삭제

$ docker rmi [이미지 id]
  • -f 옵션을 붙히면 컨테이너도 강제 삭제가 가능합니다.

컨테이너 목록 보기

$ docker ps
  • -a 옵션을 사용하면 모든 컨테이너를 출력합니다.

 

 

 


    kyo
    kyo
    〈 🖥〉

    티스토리툴바