본문 바로가기

서버

Docker란 / Window 10 설치법

이번 토이프로젝트를 진행할 때 Docker라는 것을 사용하려한다.

Docker가 무엇이고 어떻게 동작하는지 정리해보자.

#Docker란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 배가 물건을 컨테이너에 넣어 운반하는 것처럼 도코도 여러가지 원하는 프로그램들을 컨테이너에 넣어 배포할 수 있다는 점이 비슷하다. 

도커는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템도구, 코드, 런타임등 소프트웨어를 실행하는데 필요한 모든 것이 포함되어있다. 즉, 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 환경에 구애받지않고 애플리케이션을 신속하게 배포, 확장 및 관리를 할 수 있게 해준다.

 

#컨테이너란?

도커의 이미지가 실행된 상태이다. OS를 가상화하는 것이 아니라 프로세스가 격리된 공간에서 동작하는 기술이다.

VM이 서버 하드웨어를 위에 게스트 OS를 가상화하여 사용하는 방식으로 이 방식은 여러가지 OS를 가상화할 수 있고 비교적 사용법이 간단하지만 무겁고 느리다는 단점이 있다.(VM은 OS를 자체적으로 가지고 있어야 해서 용량이 커지기 때문이다.)

 

컨테이너는 서버 운영체제를 가상화하여 OS레벨을 공유하고, 프로세스를 격리하는 방식을 취한다. 즉, 애플리케이션 레벨에서는 각각의 애플리케이션을 격리해서 실행할 수 있다. 그래서 하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 끼치지않고 독립적으로 실행할 수 있으며, CPU나 메모리는 프로세스가 필요한 만큼만 추가로 사용하기 때문에 성능적으로도 거의 손실이 없다.

가상머신과 도커

#Image

도커에서 Image란 컨테이너를 정의하는 읽기 전용 템플릿이며 각각 하나의 프로그램을 이미지라고 한다. 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지않고 변하지 않는다. 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장한다. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

 

#장점

1. 쉽고 빠른 실행 환경 구축

도커 컨테이너로 초기 개발환경을 배포하게되면 프로젝트 개발 및 실행환경을 강제화 할 수 있다.

 

2. 가볍고 빠른 실행 속도

OS를 실행하지 않고도 모든 프로세스에 대한 컨테이너를 실행할수있기 때문에 실행속도가 빠르다.

 

3. 비용절감

컨테이너의 크기가 매우 작고, 하나의 물리적 서버에 다수의 컨테이너를 가동시킬 수 있다.

 

4. 쉬운 배포

프로그램 개발이 완료되면 개발했던 환경을 그대로 배포할 수 있다. 

 

# Window 10 docker 설치 및 mysql 컨테이너 올리기

window 10에서 docker를 설치하기 앞서 Windows의 에디션 확인이 필요하다. Home, Pro에 따라 설치 방법이 다르니 주의하자.

 

  • Windows 10 Pro 에디션
    • WSL2 기반 Docker Engine 사용 가능
    • Hyper-V 기반 Docker Engine 사용 가능
  • Windows 10 Home 에디션
    • WSL2 기반 Docker Engine 사용 가능

WSL2 설치 및 사용법 참고

https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/

 

1. Docker 설치

Install Docker Desktop on Windows | Docker Documentation

 

2. Image가져오기

$ docker pull mysql

 

ERROR.

설치 후 도커 대시보드에서 "Docker Desktop stopped..."라 뜨고 실행이 안되는 상황발생.

걍 4.5버전에서 발생하는 문제다. 

도커 삭제 후 4.4버전 다운받자...

'서버' 카테고리의 다른 글

MSA  (0) 2022.06.24
AWS EC2 서버 구축 - 1. 인스턴스 생성  (0) 2022.06.23
HTTP 쿠키와 세션  (0) 2021.12.31
HTTP 기본  (0) 2021.12.25
URI와 웹 브라우저 요청 흐름  (0) 2021.12.24