도커(Docker)란?
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있도록 도와주는 컨테이너 기반의 오픈 소스 가상화 플랫폼이다. Docker의 주요 개념은 애플리케이션과 그 애플리케이션이 의존하는 모든 라이브러리를 컨테이너(Container)라는 독립적인 환경에 포장하는 것이다.
- 도커에서 컨테이너란?
컨테이너란 "다양한 OS에 여러 application이 올려져 있는 것 이라고 볼 수 있다. 택배나 화물선 위에 수출 용품을 싣는 컨테이너를 대신하여 프로그램(소프트웨어)을 담는 격리된 공간을 의미 한다.
- 각각의 격리된 여러개의 소프트웨어 컨테이너에는 ubuntu, centos등의 운영체제, 그리고 java, python, 아파치 웹서버나, mysql 같은 dbms 등의 프로그램들 까지도 담기게 된다.
- 각 컨테이너는 격리된 공간이기 때문에 한 컨테이너가 해킹을 당하던, 한 컨테이너에 문제가 생기더라도 컨테이너간에 영향을 끼치지 않는다.
- Docker와 전통적인 가상머신(VM)의 차이점
1. 경량(Lightweight):
- 컨테이너는 가상머신보다 훨씬 가벼우며, 운영체제의 커널을 공유하므로 더 적은 리소스를 사용한다.
- 빠른 시작과 종료가 가능하며, VM처럼 전체 운영체제를 부팅할 필요가 없다.
2. 이식성(Portability): Docker 컨테이너는 어디서나 동일하게 동작한다. 개발 환경에서 실행된 애플리케이션이 그대로 운영 환경에서도 동일하게 실행된다.
의존성 관리: 애플리케이션의 모든 의존성을 컨테이너에 포함할 수 있으므로, 환경에 따른 버전 충돌 문제를 방지할 수 있다.
- 도커의 장점
1. 빠르고 가벼운 가상화 솔루션
- 호스트의 운영체제를 공유하여 필요한 최소한의 리소스만 할당받아 동작하는 방식 이기때문에 가볍다.
- 즉 ,기존 Hypervisor 엔진을 사용하지 않고, Docker Engine을 통해 Guest OS 없이 실행 가능하다. Guest OS가 없기 때문에 가상머신보다 훨씬 빠른 실행 속도를 보장할 수 있다.
- 하드웨어 가상화를 하지 않기 때문에, 메모리 엑세스, 파일 시스템, 네트워크 실행 성능도 뛰어나다.
2. 개발언어에 종속되지 않는다.
- 개발 언어나 툴에 상관없이 어떠한 애플리케이션이라도 만들 수 있으며, Docker에서 만들어진 애플리케이션은 이동성이 뛰어나며 어디서나 실행될 수 있다.
3. 뛰어난 보안성
- 서비스가 해킹시에도 각 컨테이너들은 격리되어있기 때문에 원래의 서버에 영향을 미치지 않는다.
- Docker의 주요 구성 요소
- 이미지(Image): 불변의 파일 시스템으로서 컨테이너를 생성할 수 있는 모든 것이 담긴 템플릿이다. 예를 들어, 애플리케이션 코드, 의존성, 런타임 등이다.
- 컨테이너(Container): 이미지를 실행한 가상 환경이다. 애플리케이션과 관련된 모든 것을 포함하며, 실제로 독립된 프로세스로 실행된다.
- 레이어(Layer): 도커 이미지는 여러 개의 읽기 전용 레이어로 구성된다. 새로운 명령을 추가할 때마다 새로운 레이어가 생성된다.
- 도커 파일(Dockerfile): 이미지를 빌드하기 위한 설정 파일이다. 이미지 빌드에 필요한 명령어들이 모두 정의되어 있다.
- Docker 가격 정책
4가지의 가격 정책이 있다. (필자는 당연히 무료 버전)
도커 설치하기
https://www.docker.com/products/docker-desktop/
- Docker 설치
Docker는 Windows, macOS, Linux에서 사용할 수 있다.
◆ Windows에서 설치
- Docker Desktop for Windows 사이트에 접속하여 Docker Desktop을 다운로드하고 설치한다.
- 설치 후 Docker Desktop을 실행한다.
- Docker Desktop 설정에서 '컨테이너와 Kubernetes'를 활성화할 수 있다.
◆ macOS에서 설치
- Docker Desktop for Mac 사이트에 접속하여 Docker Desktop을 다운로드하고 설치한다.
- 설치 후 Docker Desktop을 실행한다.
필자의 경우에는 Windows 사용자이므로, Windows 버전으로 설치해본다.
먼저, 도커 사이트에가서 Docker Desktop을 다운로드(AMD 64) 하고,
다운로드된 설치 파일을 실행한다.
설치가 완료되면 재부팅을 하게 된다. 그러니 작업 하던 것이 있으면 반드시 미리 저장해 두어야 한다. 필자도 글 쓰다가 갑자기 재부팅돼서 멘붕왔다.
재부팅을 하고나면 아래와 같은 화면이 나오는데, Accept를 눌러주면 된다.
Accept 버튼을 누르면 로그인 화면이 나오는데, 필자의 경우는 기존에 계정이 없었으므로 구글과 연동해서 계정을 생성하고 로그인하였다.
로그인을 하고나면 간단한 설문 2개를 하고, 설치 및 실행이 완료된다.
Docker 기본 명령어
도커를 사용하기 위한 몇 가지 기본 명령어들
- 이미지 다운로드: docker pull <이미지 이름>
- 컨테이너 실행: docker run -it --name <컨테이너 이름> <이미지 이름>
- 실행 중인 컨테이너 목록 확인: docker ps
- 모든 컨테이너 목록 확인: docker ps -a
- 컨테이너 중지: docker stop <컨테이너 ID 또는 이름>
- 컨테이너 삭제: docker rm <컨테이너 ID 또는 이름>
- 이미지 삭제: docker rmi <이미지 ID 또는 이름>
[출처]
https://goddaehee.tistory.com/251
도커 공식 홈페이지
'[파이썬 Projects] > <파이썬 머신러닝>' 카테고리의 다른 글
[머신러닝]텐서플로 모델 훈련과 배포: 버텍스 AI (실패 및 보류) (0) | 2024.12.07 |
---|---|
[머신러닝] 텐서플로 모델 훈련과 배포 (0) | 2024.12.07 |
[머신러닝] 군집: 군집 사례 (1) | 2024.11.16 |
[머신러닝] 군집: k-평균 알고리즘 훈련하기 (0) | 2024.11.16 |
[머신러닝] 머신러닝 기반 분석 모형 선정 (1) | 2024.11.16 |