본문 바로가기

독서/시작하세요! 도커 & 쿠버네티스7

7. 도커 스웜 도커 스웜을 사용하는 이유 앞의 내용은 대부분 하나의 호스트를 기준으로 합니다. docker ps는 하나의 도커 엔진에 존재하는 컨테이너의 목록을 출력하며 create, run 명령어 또한 하나의 도커 엔진에 컨테이너를 생성합니다. 하지만 호스트 머신에서 도커 엔진을 구동하다가 CPU, 메모리 같은 자원이 부족하다면 여러 방법이 있겠지만 가장 많이 사용하는 방법이 여러대의 서버를 클러스터로 만들어 자원을 병렬로 확장하는 것입니다. 그러나 여러대의 서버를 하나의 자원 풀로 만드는 것은 쉬운 작업이 아닙니다. 새로운 서버나 컨테이너가 추가됐을 때 이를 발견하는 작업부터 어떤 서버에 컨테이너를 할당 할 것인가에 대한 스케줄러, 로드밸런서, 클러스터 내의 서버가 다운됐을 때 고가용성을 어떻게 보장할지 등이 문제.. 2023. 12. 13.
6. 도커 데몬 지금까지 도커를 사용하는 방법에 대해 알아보았습니다. 가장 먼저 알아야 할 컨테이너부터 시작해서 컨테이너의 밑바탕이 되는 이미지, 이미지를 생성할 수 있는 Dockerfile을 알아보았습니다. 그렇다면 이제는 도커 자체를 다뤄볼 차례입니다. 도커 자체에 사용할 수 있는 여러 옵션을 익히면 컨테이너와 이미지를 좀 더 쉽게 사용할 수 있을뿐더러 도커를 이용한 개발이 수월해집니다. 도커의 구조 도커는 /usr/bin/docker 에 위치한 파일을 통해 사용되고 있습니다. 컨테이너와 이미지를 다루는 명령어는 /usr/bin/docker 에서 실행되지만 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행되고 있습니다. docker 명령어가 실제 도커 엔진이 아닌 클라이언트로서의 도커이기 때문입니다... 2023. 12. 7.
5. Dockerfile 명령어 ADD vs COPY Copy는 로컬 디렉터리에서 읽어 들인 컨텍스트로부터 이미지에 파일을 복사하는 역할을 합니다. 사용하는 형식은 ADD와 같습니다. 하지만 COPY는 로컬의 파일만 이미지에 추가할 수 있지만 ADD는 외부 URL 및 tar 파일에서도 파일을 추가할 수 있다는 점에서 다릅니다. 즉 COPY 기능이 ADD에 포함되는 것 입니다. 그러나 ADD를 사용하는 것은 그다지 권장하지 않습니다. ADD로 URL이나 tar 파일을 추가할 경우 이미지에 정확히 어떤 파일이 추가될지 알 수 없지만, COPY는 로컬 컨텍스트로부터 파일을 직접 추가하기 때문에 빌드 시점에서도 어떤 파일이 추가될지 명확합니다. ENTRYPOINT vs CMD CMD는 컨테이너가 시작될 때 실행할 명령어를 설정합니다. 이는 d.. 2023. 12. 2.
4. Dockerfile 빌드 이미지 생성 3장에서 Dockerfile이 생성되는 과정을 확인해볼게요. (test.html, Dockerfile 위치는 예로 ./) [1. 빌드 컨텍스트] || || V docker build -t mybuild:0.0 ./ --------> FROM ubuntu ~~ ---------> myapp:0.0 (4. 새로운 이미지) (2. 디렉터리: ./) RUN apt-get update (3. 도커 이미지) 이미지 빌드를 시작하면 도커는 가장 먼저 빌드 컨텍스트를 읽어 들입니다. 빌드 컨텍스트는 이미지를 생성하는 데 필요한 각종 파일, 소스코드, 메타데이터 등을 담고 있는 디렉터리를 의미하며, Dockerfile이 위치한 디렉터리가 빌드 컨텍스트가 됩니다. 빌드 컨텍스느는 DockerFile에서 빌드될.. 2023. 11. 30.
3. 도커 이미지 도커 이미지 생성 사용자만의 이미지를 직접 생성하는 실습을 해보겠습니다. 이미지로 만들 컨테이너를 생성하고, 컨테이너 내부에 first라는 이름의 파일을 하나 생성해 기존의 이미지로부터 변경사항을 만듭니다. docker commit 명령어를 입력해 컨테이너를 이미지로 만듭니다. 위에서는 이미지의 이름을 commit_test, 태그를 first로 설정했습니다. -a 옵션은 author을 나타내고 이미지의 작성자를 나타내는 메타데이터를 이미지에 포함시킵니다. commit_test:first 이미지의 작성자 데이터는 "alicek106"으로 설정됩니다. commit_test 이름에 first라는 태그로 이미지가 생성되었습니다. 이번에는 commit_test:first 이미지로 새로운 이미지를 생성해 봅시다. .. 2023. 11. 29.
2. 도커 볼륨 & 도커 네트워크 도커 볼륨 : 도커 이미지는 어떠한 경우로도 변경되지 않으며, 컨테이너 계층에 원래 이미지에서 변경된 파일시스템 등을 저장합니다. 이미지에 mysql을 실행하는 데 필요한 애플리케이션 파일이 들어있다면 컨테이너 계층에는 로그인 정보나 게시글 등과 같이 데이터베이스를 운용하면서 쌓이는 데이터가 저장됩니다. 그러나 mysql 컨테이너를 삭제하면 컨테이너 계층에 저장돼 있던 데이터베이스의 정보도 삭제된다는 점인데, 도커의 컨테이너는 생성과 삭제가 매우 쉽습니다. 이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 수 있는 방법이 몇 가지 있는데, 가장 활용하기 쉬운 방법이 바로 볼륨을 활용하는 것입니다. 방법이 여러 가지 있는데 알아서 알아보아요. 1. 호스트 볼륨 공유 mysql 데이터베이스 컨테.. 2023. 11. 28.
1. 도커 도커 : 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트 Go 언어로 작성되어 있고. 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이다. 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 여래 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상 머신에는 우분투, CentOs 등의 운영체제가 설치되어 사용됩니다. 각 게스트 운영체제는 다른 게스트 운영체제와는 달리 완전히 독립된 공간과 시스템 자원을 할당받아 사용합니다. 이러한 가상화 방식을 사용할 수 있는 대표적.. 2023. 11. 24.