hyperskill - Introduction to docker, installation 영어 원문
제품을 생성한 이후, 당신은 아마 고객에게 이를 표현할 때 특정한 문제들을 마주 할 겁니다.
몇 가지 요소들은 다른 플랫폼들에서 서로 다를 겁니다 : OS, 설정, 전역 라이브러리 등
또한, 전체적인 인프라체제를 생성할 때 서로 다른 방법론이 사용됩니다.
이번 주제에서는, 도커에 대해 살펴 볼 것이며,
어플리케이션을 전달하는 방식을 쉽게 만드는 가장 유명한 솔루션이 도커입니다.
What is Docker? - 도커란 무엇인가?
Docker 는 동일한 운영 체제 위에서,
몇백, 혹은 심지어 수천개의 격리되거나 독립된 컨테이너 가상화를 제공하는 기술입니다.
각각의 컨테이너는 스스로의 운영 체제를 가지고 있지만,
그들 스스로의 운영 체제 커널을 가지고 있지 않아서 호스트 운영체제의 커널을 사용합니다.
도커는 선택된 운영체제와 버전으로, 다른 어플리케이션으로부터 격리된 상태로 구동합니다.
이는 registry(레지스트리)로부터 다운로드받은 컨테이너 구조나 이미지들을 활용합니다.
예를 들어, 가장 유명한 것은 Docker Hub 입니다.
이러한 경우, 이는 의존성 문제를 제거하며, 어플리케이션이 포함된 컨테이너를 스스로 만듭니다.
가상 장치가 서버 하드웨어를 가상화 하는 방식과 유사하며,
컨테이너들은 서버 운영체제를 가상화합니다.
이러한 운영 시스템 덕분에, 우리는 중요한 프로그램들을 설치할 수 있으며,
이 컨테이너 안에서 우리의 어플리케이션들을 실행 합니다.
도커는 이러한 것을 수행하기 위해서 간단한 명령어들을 제공합니다.
Docker architecture - 도커 아키텍쳐
도커는 리눅스 커널의 지원이 있다고 알려진 시스템이므로,
리눅스 운영 체제에서 구동됩니다.
따라서 도커는 어떻게 윈도우와 맥 두 운영체제 위에서 사용될 수 있는 걸까요?
도커는 클라이언트-서버 아키텍쳐를 가지고 있습니다.
도커는 백그라운드 데몬 프로세스와 컨테이너를 작업하기 위한 CLI 인터페이스를 가지고 있습니다.
리눅스에서는, 데몬과 CLI 둘 다 호스트의 운영체제에서 직접적으로 실행 될 수 있습니다.
그리고 데몬은 리눅스 운영체제의 가상 머신에서 실행되는데,
이는 데몬이 리눅스 운영체제의 커널을 필요로 하기 때문입니다.
도커의 심장인 데몬(daemon) 프로세스는 세 가지 유형의 도커 소프트웨어 컴포넌트와 작업합니다 :
- Client : 클라이언트
- Objects : 객체
- Registry : 레지스트리
이제, 하나 하나씩 리뷰 해 봅시다.
Client - 클라이언트
도커는 클라이언트-서버 아키텍쳐를 가지고 있습니다.
따라서, 클라이언트는 당신 스스로의 호스트에서 실행하며, 서버 측면은 도커 데몬이 실행되는 장소의 호스트입니다.
또한, 클라이언트 사이드에서는 CLI를 제공하며, 어플리케이션을 생성, 실행, 정지 할 수 있게 명령어를 허용합니다.
Registry - 레지스트리
도커 레지스트리는 더 많은 도커 이미지들을 포함할 수 있는 도커 레포지토리를 담습니다.
도커 레지스트리 덕분에, 당신은 이미지들을 저장하거나 업로드 할 수 있습니다.
예를 들어, Docker Hub(도커 허브) 는 모두가 사용 할 수 있는 공개적인 레지스트리입니다.
짧게 말해서, 이미지는 Docker Registry(도커 레지스트리) 를 유지합니다.
심지어 당신은 Docker Hub 라는 플랫폼에서 스스로의 사적 레지스트리를 실행할 수 있습니다.
이는 Docker Hub Cloud(도커 허브 클라우드) 에서 제공되며,
또한 그곳엔 그들의 사적인 클라우드에 이미지를 유지시키길 원하는 사람들을 위한 Private Registry service 가 있습니다.
---
title : 도커의 전반적인 흐름
---
flowchart LR
subgraph Client
docker_build("docker build")
docker_pull("docker pull")
docker_run("docker run")
end
subgraph DOCKER_HOST
Docker_daemon("Docker daemon")
subgraph Containers
Container1
Container2
Container3
Container4
end
subgraph Images
image_ubuntu1("ubuntu")
image_redis1("Redis")
end
end
subgraph Registry
direction LR
subgraph image1
image_ubuntu2("ubuntu")
end
subgraph image2
image_centOS1("centOS")
end
subgraph image3
image_redis2("Redis")
end
subgraph image4
image_nginx1("nginx")
end
end
docker_build -.- Docker_daemon
docker_pull --- Docker_daemon
docker_run --- Docker_daemon
Docker_daemon --- image_redis2
Docker_daemon -.-> image_ubuntu1
image_ubuntu1 ---> Docker_daemon
image_ubuntu1 --> Container1
image_redis2 --> image_redis1
잘 그려보고 싶었는데, 잘 되지 않는 것 같다..
중요한 것은, Docker daemon 이 작업의 중심이 된다는 것이다.
Objects - 객체
당신은 이러한 객체들을 결합하여 새로운 도커 이미지를 생성할 수 있습니다 :
- Image - 이미지
- Container - 컨테이너
- Network - 네트워크
- Volume - 크기
- etc - 등등
우리는 이미 Image 에 대해서 말했었고,
이제는 짧게 이미지에 대해서 말할 겁니다.
우리는 다른 오브젝트에 대해서는 다가오는 주제에서 살펴 볼 겁니다.
각각의 컨테이너는 이미지인데,
이 이미지는 읽기-전용 레이어 위에 읽기/작성 레이어가 있는 이미지입니다.
도커의 이미지(image) 는 컨테이너 내부에서 설치되고 실행되는 파일과 어플리케이션들의 컬렉션입니다.
Docker Hub 에 들어가서 도커 이미지 파일들을 리뷰할 수 있습니다.
당신이 볼 수 있다시피, 허브 안에 많은 이미지가 있는 것을 볼 수 있습니다.
사실, Dockerfile 이라는 빌드된 이미지의 내용을 설명하는 파일 유형이 있습니다.
우리는 다음 주제에서 이 파일을 참조할 겁니다.
Docker pros and cons - 도커 장점과 단점
그래서 왜 도커일까요?
이제 도커가 우리에게 제공하는 장점들을 요약 해 봅시다.
- 확장 가능한 데이터 처리 시스템을 구축하거나, 당신의 개밸자들이 플랫폼을 쉽게 관리할 수 있게 만듭니다.
- 이를 사용하기 위한 새로운 환경을 셋업할 필요가 없습니다.
- 서로 다른 운영체제를 지원합니다 : Window, Linux, macOS
- 거대한 커뮤니티를 가지고 있습니다. 당신의 궁금증을 풀기에 꽤 쉽습니다.
- Docker cloud service에 의해 통합될 수 있습니다.
또한 도커의 단점들을 요약 해 봅시다 :
- 이미지를 만들기 위해서, Dockerfile 의 구문을 배워야 합니다.
- 많은 컨테이너들을 실행하기 위해서, 시스템 오케스트레이션 하는 법을 알아야 합니다.
- 기본 OS 에서 실행하는 것 보다 약간 더 오버헤드가 있습니다.
- 원래 맞지 않는 환경에서 어플리케이션을 실행 할 때 성능 이슈가 몇개 있습니다.
How to install Docker?
Conclusion - 결론
도커에 대해서 기억해야 할 가장 중요한 것들은 :
- 이는 하드웨어 가상화 기술이 아닙니다.
- 이는 계층 파일 구조를 사용합니다.
- 이는 컨테이너 관리 도구입니다.
- 꽤 큰 생태계(커뮤니티)를 가지고 있습니다.
- 여러 개의 플랫폼을 지원합니다.
words to remember
emerge : 알려지다, 나타나다, 드러나다, 벗어나다
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Basic operations with a container - 도커 컨테이너 기초 명령어 (0) | 2024.08.30 |
---|---|
Run the "hello-world" docker container - hello-world 이미지로 도커 컨테이너 실행하기 (3) | 2024.08.28 |
Containers - 컨테이너 기초 의미 (0) | 2024.08.23 |
Globbing - 글로빙 (0) | 2024.08.21 |
Loops and sequences - Bash 반복문 (0) | 2024.08.20 |