Docker

강민성·2022년 1월 18일
0

가상화


물리적 머신(노트북, 컴퓨터)위에 여러 가상 머신을 띄워서 다수의 운영체제를 한 물리적 머신으로 돌릴 수 있게 하는 것

가상화를 하는 이유

현대의 컴퓨터는 많은 발전을 거듭해 성능이 향상됨
--> 한 대의 컴퓨터에 한 가지 일만 시키기에는 남는 자원이 아까움(낭비) + 비싼 서버 컴퓨터를 늘리고, 서비스를 늘릴때마다 서버에 비용투자를 하기에는 비용 부담이 큼
--> 한 대의 컴퓨터에 여러 가상 머신을 띄워서 사용

Docker와 기존 가상화의 차이점


호스트 os 위에 새로운 os들을 설치하는 것이 아니라, 필요한 것들만 가상화해서 실행
훨씬 가볍고 쉽고 빠르게 가상환경을 만들 수 있음

Docker란

컨테이너 가상화 기술(가상화된 컨테이너 운영)이자 회사명
많은 사용량으로 인해 컨테이너 가상화 기술의 대명사처럼 사용되고 있음
(하지만 최근에는 다른 오픈소스 컨테이너 가상화 기술들도 성장하고 있기 때문에, 이 이름 하나로만 기억하면 안됨)

Docker의 구조


클라이언트-서버-레지스트리-이미지-컨테이너
사용자가 도커를 설치하고 명령어를 입력하면, 도커 클라이언트가 명령을 서버에 전달하고 결과값을 받아옴
명령어는 도커 데몬이 전달받고, 명령어에 대한 작업은 도커 데몬이 수행함
도커 레지스트리(저장소)에는 사용자가 만든 이미지들을 올릴 수 있으며, 그 이미지들을 실행해서 띄울 수 있는 것이 컨테이너. 이미지를 올리면, 어떤 컴퓨터에서든 권한만 있으면 컨테이너를 통해 이미지들을 실행해서 띄울 수 있음

Docker 컨테이너란?

카세트 플레이어에 비유 가능
Docker의 전체적인 모습 = 카세트 플레이어
Docker 이미지 = 카세트 테이프
Docker 데몬(서버) = 카세트 플레이어
Docker 컨테이너 = 이미지(카세트 테이프)를 Docker 데몬(카세트 플레이어)에서 재생하는 동작 + 동작으로 인해 나오는 결과물
즉 어떤 컴퓨터 혹은 서버든 Docker만 설치되어 있으면 이미지를 가지고 실행할 수 있음
컨테이너는 단일 프로세스로서 동작하고, 프로세스의 작업이 종료되면 컨테이너도 종료됨(영원하지 않음, 이는 마치 카세트 플레이어의 음악 재생이 모두 끝나면 종료되는 것과 같음)

Docker 명령어

docker ps 실행중인 컨테이너를 보여주는 명령어
docker ps -a 실행 종료된 컨테이너를 포함하여 모든 컨테이너를 보여주는 명령어 및 옵션
docker images 생성되거나 다운로드된 이미지를 보여주는 명령어
docker images -a 모든 이미지를 보여주는 명령어 및 옵션
docker build -t Docker허브에가입한계정명/이미지명(프로젝트명권장):버전 Docker 이미지를 빌드하는 명령어(Dockfile 사용)
docker run --name 컨테이너명 이미지명 Docker 컨테이너를 실행하는 명령어(완성된 이미지를 사용)
docker run -it 이미지명 /bin/bash Docker 컨테이너를 실행시킴과 동시에 컨테이너에 접속하여 shell을 실행시키는 명령어

profile
Back-end Junior Developer

0개의 댓글