DevOps/Docker & Kubernetes(26)
-
[Docker in Action] Single-host networking
Networking background (for beginners) 애플리케이션을 도커 컨테이너에 배포했다면, 외부에서 애플리케이션을 사용할 수 있도록 해당 컨테이너로의 접근을 허용해주어야 합니다. 이 전반적인 과정들을 이해하기 위해서는 도커가 컨테이너의 네트워크를 어떻게 관리하는지를 알아야 하며, 이를 위해 기본적으로 "네트워크"에 대한 기본적인 지식들을 짚고 넘어가도록 하겠습니다. Basics: Protocols, interfaces, and ports 프로토콜(Protocol)은 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해놓은 "규약"을 의미합니다. 쉽게 이야기해서 비트 스트림을 어디서 어떻게 끊어서 어떤 의미를 부여해서 해석할 것인지를 정해놓은 것으로써, Sender와 Receiver가..
2022.05.01 -
[Docker in Action] Working with storage and volumes (2)
Shared mount points and sharing files 여러 개의 컨테이너에서 동일한 File Set(set of files)을 공유할 수 있도록 하는 기능은 매우 유용합니다. 파일 공유는 이전 포스팅에서 설명한 "Bind Mounts"와 "Docker Volume"의 2가지 방법을 통해 사용할 수 있습니다. Bind Mounts 다음 명령어를 순차적으로 실행해보겠습니다. // Host Machine에 디렉터리를 생성합니다. LOG_SRC=~/web-logs-example mkdir ${LOG_SRC} // plath 라는 이름의 컨테이너를 실행합니다. // Host Machine의 path와 컨테이너의 path를 바인딩합니다. // 로그를 기록합니다. docker run --name pla..
2022.04.23 -
[Docker in Action] Working with storage and volumes (1)
Overview 도커 컨테이너를 통해 애플리케이션을 운영하다 보면, "데이터"를 적절하게 관리할 방법 이 필요합니다. 이를테면 데이터베이스 인스턴스를 컨테이너 안에서 동작시키는 상황에서 인스턴스나 호스트 머신에 문제가 생겨서 데이터베이스 컨테이너를 내려야 하거나, 업데이트를 위해 컨테이너를 재시작해야 한다면, 그러한 경우에도 불구하고 기존에 저장되어 있던 데이터는 유지되어야 합니다. 또한 여러 개의 웹 애플리케이션을 운영하는 경우, 모니터링이나 성능 최적화 등을 위해 다양한 로그들을 남겨야 할 텐데 마찬가지로 이 로그들은 컨테이너가 내려갈 때 같이 사라져서는 안 되기 때문에 별도의 관리 방법이 필요할 것입니다. 이번 포스팅에서는 도커가 파일 시스템을 다루는 방법들을 살펴봄으로써, 실제로 데이터를 어떻게 ..
2022.04.23 -
[Docker in Action] Software installation simplified (2)
Installation files and isolation 실제로 도커에서 우리가 "이미지"라고 부르는 개념은 "이미지 레이어"들의 조합(Collection)을 의미합니다. "이미지 레이어(layer)"는 파일과 파일 메타데이터의 조합으로, 하나의 "Atomic Unit"으로 기능합니다. 도커는 이 각각의 레이어를 이미지처럼 취급하며, 이렇게 이미지를 구성하는 이미지 레이어들과 이미지 사이의 관계를 이해하면 다음과 같은 핵심적인 질문들을 해결하는데 도움이 됩니다. What image properties factor into download and installation speeds? What are all these unnamed images that are listed when I use the doc..
2022.04.17 -
[Docker in Action] Software installation simplified (1)
Identifying Software 특정한 프로그램을 설치하기 위해서는 프로그램을 유일하게 식별할 수 있는 식별자가 필요합니다. 이 식별자는 프로그램의 이름, 사용하려고 하는 프로그램의 버전, 그리고 프로그램을 가져올 위치(Source)를 포함해야 합니다. (You would need a way to name the progam, specify the version that you want to use, and specify the source that you want to install it from.) 이전 포스팅에서 살펴보았듯, 도커는 이미지로부터 컨테이너를 생성합니다. 이 이미지는 컨테이너에서 사용 가능한 "파일"과 이미지의 정보를 가리키는 "메타데이터"로 구성됩니다. 이 메타데이터는 레이블, ..
2022.04.17 -
[Docker in Action] Running Software in containers (2)
Eliminating metaconflicts: Building a website farm 이전 포스팅에서 도커가 Process Namespace를 통해 프로세스를 격리시켜 컨테이너 안에서 동작하는 소프트웨어 간의 의도치 않은 충돌(conflicts)을 방지한다는 것을 살펴보았습니다. 하지만 컨테이너 간의 프로세스가 잘 격리되더라도 컨테이너의 이름과 같은 "metadata"끼리 충돌이 발생할 가능성이 여전히 존재하며, 이를 "metaconflicts" 라고 합니다. 예를 들어, 이전 포스팅에서 살펴보았던 Web, Mailer, Watcher(Agent) 구조에서 Web과 Watch를 Scale up 하는 경우, 각각의 컨테이너는 동일한 이름을 가질 수 없습니다. 컨테이너를 관리하기 위해서는 특정 컨테이너..
2022.04.10