반응형
1. Docker-compose로 컨테이너 구축을 한번에~ Docker 개발 환경에서는 무수히 많은 컴포넌트들이 연결되어 있습니다. 컨테이너가 최소 1개 이상 존재할 것이고, 컨테이너끼리 또는 외부 네트워크와 연결할 수 있는 네트워크 인터페이스 정보, 공유 스토리지 역할을 할 디렉토리 볼륨 정보, 마지막으로 각 컨테이너에서 동작할 애플리케이션들의 초기 설정까지, 건드려야 할 요소들이 상당히 많습니다. 각각을 구성하기 위해 Docker 엔진에서는 docker run, docker create와 같은 터미널 명령어를 기본적으로 제공합니다만, 아래 예시처럼 컨테이너 하나를 올리는데에만 하드 코딩이 될 수 있습니다. 또, 테스트를 반복할때마다 수십개의 명령어를 처음부터 다시 쭉 입력하는 것도 번거로운 일이죠. ..
Dockerfile은 사용자가 구축하고자 하는 Docker 컨테이너의 configuration 정보를 담는 설정 템플릿입니다. 이 스크립트 파일 안에는 기본 뼈대가 될 컨테이너 이미지(ex., Ubuntu, NginX 등), 환경 변수, 빌드 후 실행할 코드 등을 정의할 수 있습니다. 1. Dockerfile 기본 구문 FROM 배포할 컨테이너 기본 이미지를 지정합니다. FROM debian:buster-slim ENV 컨테이너 동작 과정에서 사용할 환경 변수를 설정합니다. # ENV [변수 명] [변수 값] ENV NGINX_VERSION 1.20.1 WORKDIR 컨테이너를 실행했을 때, 홈 디렉토리 역할을 할 경로를 지정합니다. 뒤에 설명할 RUN, CMD과 같은 명령어도 해당 경로를 기준으로 실행..
1. 가상화/클라우드의 역사 흔히 머신(Machine)이라고 하면 컴퓨터나 서버를 가리킵니다. 이 머신들은 하드웨어, 즉 CPU, RAM, 하드디스크, 네트워크 인터페이스 카드 등의 요소들을 자체적으로 갖추고 있으며 바로 그 위에 운영 체제와 애플리케이션이 동작하는 모양새가 일반적으로 상상할 수 있는 머신의 형태입니다. 서버 가상화의 개념은 2000년대 초에 알려지기 시작했습니다. 엔지니어들은 하이퍼바이저(hypervisior)라는 것을 발명했고, 이 하이퍼바이저는 동일한 하드웨어 위에 둘 이상의 운영체제를 올릴 수 있게 되었습니다. 그와 동시에, 하이퍼바이저에서 생성된 각 운영체제들을 특별히 가상 머신(Virtual Machine)으로 부르기 시작했습니다. 대표적인 Hypervisior로는 KVM(Op..
Docker가 생성한 컨테이너, 시스템, 가상 네트워크 등은 사실 일시적으로만 유지되는 휘발성 자원입니다. 컨테이너 내부의 데이터는 호스트 머신 어딘가에 저장되어 있기야 하겠지만, 단일 메모리 위치에 블럭 형태로 모여 있는 것도 아닐 뿐더러, 컨테이너가 종료 또는 재실행되는 과정에서 해당 영역이 다른 데이터로 덮어 씌워질 수 있습니다. 열심히 컨테이너 안에서 작업을 하거나 데이터를 수집했는데 이런 것들이 모르는 사이에 날라가면 좋진 않겠죠. 시스템이든 애플리케이션이든 언제 어떻게 업데이트 해야되고 확장, 재배치해야 할지는 당장 알 수 없는 일이니까요. 다행히도, Docker는 컨테이너 내부의 데이터가 영구적으로 유지되고 안전하게 관리 받을 수 있게 하는 체계가 존재합니다. 1. Docker의 데이터 관리..
컨테이너 이미지 다운로드 Docker Hub를 통해 구동시킬 앱의 이미지를 미리 내려받습니다. # 이미지 다운로드: "docker image pull [image 이름]:[version]" # version을 명시하지 않으면 가장 최신 버전으로 내려받습니다. docker pull nginx # 사용가능한 이미지 조회 docker image ls 컨테이너 생성 갖고 있는 이미지를 이용하여 컨테이너를 생성하고 관리하는 명령어입니다. 본 포스트에서는 Nginx를 생성하여 4885번 포트로 서비스를 운영하는 예시를 담았습니다. # 컨테이너 생성 및 실행: "docker run [options] [Image 명]" # 옵션 종류: # --detach (-d): 백그라운드 실행 체크, # --name: 컨테이너 이..
1. Docker 네트워크 구성 Docker 컨테이너는 격리된 환경에서 개별적으로 동작하기에, 초기에는 컨테이너간의 통신이 막혀있습니다. 컨테이너 간의 연결을 위해 주로 제공되는 네트워크 형태는 다음과 같습니다. Bridge: 여러 컨테이너를 서로 연결시키 위한 가상 private 네트워크 Overlay: 서로 다른 호스트 및 도커 데몬에 속하는 컨테이너끼리 연결하는 네트워크 (주로 Swarm에서 쓰임) Host: 호스트 컴퓨터와 동일한 환경에서 동작하는 네트워크 None: 네트워킹이 일체 불가능한 상태 2. Bridge 네트워크 이 중에서 Bridge 네트워크는 Docker의 기본 네트워크 옵션입니다. 네트워크 생성 명령어를 입력할 때 특별한 타입을 지정하지 않으면 Bridge 네트워크가 만들어진다고 ..