본문 바로가기
  • Where there is a will there is a way.
개발/기타개발

Docker 쉽게 정리

by 소확행개발자 2018. 10. 31.

Docker 배경 

docker 는 인프라 개발에서 드는 비용을 최소화 하기 위해 나왔다고 생각하면 된다.


Docker 의 장점


기존에는 infra 관리할 때 노가다?로 모두 동일한 세팅을 했다면


기본적인 infra관리에서 docker 를 사용하게 된다면 동일한 image 를 사용해서 동일한 환경을 구성할 수 있는 장점이 생긴다.


그리고 데이터베이스 세팅과 웹서버 세팅에 필요한 여러개의 OS 환경을 만들어야 했던 환경에서


docker 로 가상화 컨테이너를 구축해서 보다 적은 컴퓨터나 인스턴스들로 개발과 배포환경이 만들어 질 수 있게됬다.



가상화 기술은 호스트 가상화 / 하이퍼바이저 가상화 / 컨테이너 가상화 


3가지로 분류되는데 


호스트 가상화 : 간단히 말해서 가령 window OS 가 있다고 하자 그렇다면 거기에 virtualBox 를 다운받고 거기에 가상환경 즉 mac / ubuntu / linux 설치등을 virtual 로 다운받고 설치하는 환경을 말한다.


하이퍼바이저 가상화 : 위에서 window OS를 뺀다고 생각하면 된다.


컨테이너 가상화 : 논리적으로 구역을 나누어 애플리케이션 동작을 위한 라이브러리와 애플리케이션을 컨테이너 안에 넣고 개별 서버처럼 사용하는것이 컨테이너 가상화 ( Docker 기술 ) 이다.


Docker 의 기본 기능

다음은 docker의 기본 기능이다.

1 .Docker 이미지 생성 

2. Docker 컨테이너 동작

3. Docker 이미지 공개 및 공유


1. docker image 생성


도커 컨테이너들은 docker image 위에서 작동된다. 따라서 처음에 docker image를 생성해주어야 하는데 docker image는 Dockerfile 프로그램이나 커맨드를 통해서 만들 수 있다.


2. Docker container


Docker는 리눅스 상에서 컨테이너 단위로 서버를 구동시킨다. Docker 이미지를 통해서 Docker 가 설치됐다면 어디에서든 컨테이너를 구동시킬 수 있다.


Docker 는 하나의 Linux 커널을 ( linux 커널이란 linux 운영체제에서 여러 장치들과 직접적으로 연결 된 제어장치 ) 여러 컨테이너가 공유한다. 


Docker 의 컨테이너는 파일 시스템과 호스트가 따로 할당 되므로 다른 컨테이너와 프로세스와 파일에 엑세스할 수 없다. 


3. Docker image 공유

docker hub 는 공식 레지스트리인 docker hub 에서는 Ubuntu와 CentOS 등 Linux 배포판의 기본 기능을 제공하는 베이스 이미지가 베포되어 있다. 



Docker 사용법

우선 Docker 를 설치한 다음에 ( window 나 mac 또는 linux 에서 
)

Docker hub 에서 다운받을 image가 있으면 다운받으면 된다. 

예를들어 docker 에서 mysql을 다운받아 보자 검색창에서 mysql docker 를 검색하면 정보가 나온다.

docker run \
-d \
--name mysql5.7 \
-e MYSQL_ROOT_PASSWORD=dhqjshem1234! \
-p 3306:3306 \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \



docker exec -it container ID 명 /bin/bash

mysql 이면 mysql 커맨드 접근하는게 됨

Docker 컨테이너 내에서 파일 복사

docker cp test:/etc/passwd /tmp/etc


호스트에서 컨테이너로 파일 복사

docker cp ./local.txt test:/tmp/test.txt



댓글