일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 물리구성도
- AWS CLF
- 프로토콜
- 파이썬
- 남궁성
- 네트워크
- 인프콘
- java
- 논리구성도
- 데이터 송수신
- 역캡슐화
- 유선LAN
- 파이썬 1712
- 1764
- 자바의 정석
- 개발바닥
- 백준 1712
- TCP/IP
- 다형성
- l3 스위치
- 계층화
- modifiers
- aws 자격증
- 자바
- network
- 10866
- 백준 2775
- 인터페이스
- 테슬라폰
- 상속
- Today
- Total
병훈's Blog
서버 호스팅 강의 03-02 Docker 구조와 용어 본문
도커는 리눅스의 응용 프로그램들을 SW 컨테이너 안에 배치시키는 일을 자동화하기 위해 시작된 오픈소스 프로젝트입니다. 즉, 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 SW 플랫폼입니다.
Docker를 사용한다는 것은 서버 컴퓨터에서 컨테이너 기술을 통해 프로그램을 실행하는 걸 의미합니다.
Docker는 컨테이너의 수명주기를 관리하기 위한 도구와 플랫폼을 제공합니다.
도커는 어떻게 이러한 서비스를 제공하는 걸까요? 도커의 구조를 알아보겠습니다.
Docker는 클라이언트-서버 아키텍처를 사용합니다. ”클라이언트-서버 아키텍처”는 사용자가 프로그램을 다운받아 실행하고, 서버와 통신하는 구조입니다. 웹 사이트와는 달리 직접 무언가를 다운받는 것입니다. 게임이나 모바일 앱이 그러하죠. 즉 도커를 사용하는 우리들은 먼저 도커를 다운받아야 합니다. 도커를 사용할 때의 주의사항은 Linux 운영체제 위에 다운받아야 한다는 것입니다. Window를 사용하고 있다면, 먼저 가상화를 통해 Linux를 설치하거나, Docker Desktop을 사용해야 합니다.
Docker 클라이언트는 Docker 컨테이너를 구축, 실행 및 배포하는 무거운 작업을 수행하는 Docker 데몬과 통신합니다. Docker 클라이언트와 데몬은 동일한 시스템에서 실행될 수 있습니다. 또는 Docker 클라이언트를 원격 Docker 데몬에 연결할 수 있습니다. 또 다른 Docker 클라이언트는 Docker Compose로, 이를 통해 컨테이너 세트로 구성된 애플리케이션으로 작업할 수 있습니다.
Docker 데몬(dockerd)은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨과 같은 Docker 개체를 관리합니다. 데몬은 Docker 서비스를 관리하기 위해 다른 데몬과 통신할 수도 있습니다.
Docker 클라이언트(docker)는 많은 Docker 사용자가 Docker와 상호 작용하는 기본 방법입니다. docker run와 같은 명령을 사용하면 클라이언트는 이러한 명령을 dockerd에 보내고 이를 수행합니다. 이 docker명령은 Docker API를 사용합니다. Docker 클라이언트는 둘 이상의 데몬과 통신할 수 있습니다.
Docker 레지스트리는 Docker 이미지를 저장합니다. Docker Hub는 누구나 사용할 수 있는 공개 레지스트리이며 Docker는 기본적으로 Docker Hub에서 이미지를 찾습니다. 자신만의 개인 레지스트리를 실행할 수도 있습니다.
docker pull또는 docker run명령을 사용하면 Docker는 구성된 레지스트리에서 필요한 이미지를 가져옵니다. docker push 명령을 사용하면 Docker는 이미지를 구성된 레지스트리에 푸시합니다.
Docker를 사용하면 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 및 기타 객체를 생성하고 사용하게 됩니다.
도커 객체로 이미지, 컨테이너, 네트워크, 볼륨을 말씀드렸습니다.
컨테이너, 컨테이너… 그래서 컨테이너는 어떻게 만들고 사용하는 건지 궁금하셨을 텐데요.
이 과정은 철로 붕어빵 틀을 만들고, 붕어빵 틀로 붕어빵을 만들어내는 것과 유사합니다.
먼저 Dockerfile을 작성합니다. Dockerfile은 애플리케이션의 빌드 단계를 정의하는 텍스트 문서입니다.
Dockerfile 전용 언어로 Dockerfile을 작성합니다.
그리고 Dockerfile을 사용하여 이미지를 만듭니다. 도커 파일로 이미지를 만드는 것을 Build한다고 합니다.
`docker build` 명령을 실행하여 이미지를 빌드합니다. 이미지 태그는 이미지의 이름입니다.
이 이미지를 통해 컨테이너를 실행합니다. 컨테이너를 실행하려면 docker run명령을 사용합니다.
도커 이미지와 도커 컨테이너는 하나의 틀로 여러 붕어빵을 만드는 것처럼,
하나의 이미지를 통해 여러 컨테이너를 만들 수 있죠.
도커 네트워크는 Docker 컨테이너 간의 통신을 관리하고 격리하기 위한 기능을 제공하는 것입니다.
도커 볼륨은 컨테이너의 데이터를 유지하기 위한 기능입니다. 볼륨과 관련된 용어로는 마운트가 있습니다.
볼륨마운트, 바인드 마운트에 대해서 알아보세요.
자세한 사항은 공식 홈페이지나 다른 블로그를 참고하시면 좋을 것 같습니다.
https://docs.docker.com/guides/walkthroughs/what-is-a-container/
위 링크의 내용을 따라 한 번 실습해보세요.
방금 실습에서 포트번호 설정을 8080에 80으로 했었습니다. 앞의 8080은 외부에서 컴퓨터로 접속하는 포트번호고, 뒤의 80은 컴퓨터로 접속한 이후 도커 컨테이너로 접속하는 포트번호입니다. 컨테이너들도 서버 안의 작은 컴퓨터라고 볼 수 있고, 포트번호로 같은 서버 안의 컨테이너들을 구분합니다. 이때 외부에서 접속하는 포트번호와 도커 컨테이너의 포트번호를 일대일로 연결지어 줍니다.
포트번호 외에 EXPOSE라는 설정도 있습니다. 이는 외부에서는 포트번호로 접속할 수 없고, 서버 컴퓨터 내부에서 통신하기 위한 포트번호라고 할 수 있습니다.
저는 Nginx의 Reverse Proxy와 도커 네트워크를 같이 사용하여 서버 안에서만 접속할 수 있도록 설정했었습니다.
이제 이 단어들에 대해서도 어느 정도 익숙해지셨을 겁니다.
저는 기초적인 내용만 알려드렸기 때문에, 공식 홈페이지와 여러 블로그들을 통해 추가적인 학습을 권장드립니다.
여기서 다루지 못한 내용들은 앞으로 서버를 세팅하면서 알아보겠습니다.
출처 :
'Computer > Server' 카테고리의 다른 글
서버 호스팅 강의 04 클라우드 컴퓨팅 이론 (2) | 2024.01.10 |
---|---|
서버 호스팅 강의 03-01 Docker의 사용 배경 (1) | 2024.01.07 |
서버 호스팅 강의 02+ Git branching Tip (0) | 2024.01.07 |
서버 호스팅 강의 02 - Git과 Git 브랜치 전략 (1) | 2023.12.24 |
서버 호스팅 강의 01 - DNS 서버, URL, localhost, 공공 서버, 웹 서비스 구조 (0) | 2023.12.24 |