본문 바로가기

Container/Docker

(21)
14. Docker Network Test web 서버 역할의 컨테이너와 DB 서버 역할의 컨테이너가 있다고 가정해 보자. 만약, 이 두 container 사이를 연동하고 싶을때는 어떻게 해야 할까? 이번 포스팅에는 container 사이 연동에 필요한 link 옵션에 대한 사용법과 동작 구조에 대해 알아보자. Docker 의 Private IP Web 서버 역할의 컨테이너와 DB 서버 역할의 컨테이너가 있다고 생각해 보자. 앞서 살펴보았듯이 배포된 컨테이너는 Private IP 를 가지고 있다. 그래서 web 에서 mysql 컨테이너로 ping 을 보내면 아래와 같이 응답함을 확인할 수 있다. $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca7f026ff..
13. Docker Network Overview 이번 장에서는 컨테이너의 네트워크 구성시 사용되는 도커 네트워크중 default 로 사용되는 bridge 네트워크에 대한 구조를 설명한다. 가상 네트워크의 종류 Host-Only 외부와 단절된 내부 네트워크로 구성된 가상머신들끼리만 통신이 가능하다. NAT 호스트 PC 로부터 IP 를 할당 받아 가상머신 프로그램이 자체 DHCP 서버를 띄워 내부 네트워크 대역 할당 및 통신을 한다. 호스트 PC 를 통해서 외부 네트워크와 통신이 가능하다. BRIDGE 공유기로부터 IP 를 항당받아 호스트 PC 와 동일한 네트워크 대역의 IP 를 가지게 된다. 공유기를 통해 외부 네트워크와 통신이 가능하다. Bridge Network 일반적으로 컴퓨터에는 물리적인 네트워크 인터페이스가 설치되어 있다. 아래 그림과 같이 p..
12. Docker Compose 기존에 Docker 컨테이너간에 서로 역할이 분리되어 하나의 서비스를 위해서 Docker 컨테이너를 몇개 생성하려 한다면 아래와 같이 입력해야 한다 그리고 컨테이너가 서로 연동이 되어야 한다면 컨테이너 사이의 링크 설정도 잘 해야 한다. 이런 불편함을 일부 해소할 수 있는 툴이 Docker Compose 라는 툴이다. 이 툴은 컨테이너 사이의 설정 과 docker container run 에서 사용하는 볼륨, 네트워크, 포트 정보를 docker-compose.yml 파일에 설정하여 멀티 컨테이너를 구동시킬 수 있다. YAML Docker Compose 에서 사용하는 파일은 YAML 형식의 파일이다. 아래와 같이 YAML 문법에 대한 간단한 내용 및 샘플을 첨부한다. YAML 문법 http://seriou..
11. Docker Container Life Cycle 이번 장에서는 컨테이너 라이프 사이클을 확인하고 라이프 사이클에 따라 컨테이너의 상태를 조정하는 명령 및 컨테이너의 상태를 확인하는 명령에 대해 docker command 신규버전으로 살펴보고 정리하는 시간을 가지도록 하자. docker container run 받은 이미지를 컨테이너로 생성 후 실행 한다. 도커 이미지가 컨테이너로 생성된다는 것은 도커 이미지가 host os 를 공유해서 프로세스가 동작하는 격리 공간을 가지게 된다는 의미 이다. 그리고 현재 상태는 실행중 이 된다. (라이프 사이클 확인) $ docker container run -i -t ---name hello ubuntu:14.04 /bin/bash $ docker container run --publish 8080:80 --nam..
10. Docker Image 생성 (도커파일) 이번에는 Dockerfile 을 통해 처음부터 Docker 이미지를 생성하고 이를 Docker 레지스트리에 push 해보도록 하자. Dockerfile Dockerfile 은 GO 문법으로 작성된 Docker 이미지 설정파일이다. Dockerfile 에 설정된 내용대로 이미지를 생성할 수 있다. Dockerfile 에서 주로 사용되는 키는 아래와 같다. FROM 어떤 이미지를 기반으로 할지 설정 : 형식으로 설정 MAINTAINER 이미지를 생성한 사람의 정보를 설정하며 형식은 자유 RUN Shell 스크립트 혹은 명령을 실행 이미지 생성 중에는 사용자 입력을 받을 수 없으므로 apt-get install 명령에서 -y 옵션을 사용 VOLUME 호스트와 공유할 디렉터리 목록 WORKDIR CMD, RUN..
09. Docker Image 생성 (기존이미지 사용) 이미지를 업로드하는 방법은 기존에 이미 존재하는 이미지를 이용하는 방법과 Dockerfile 을 사용하여 업로드 하는 방식이 있다. official repositories 오피셜 레포지토리는 root 네임 스페이스에 위치한 Repo 들로 이런 Repo 에 속해있는 이미지에 접근할 경우에는 사용자 계정이 필요하지 않다. 위의 Nginx 도 오피셜 레포지토리에 속한 이미지이다. docker image tag 이미지에 새로운 태그를 부여하는 경우 docker image tag 명령을 사용한다. 간단히 아래 명령과 같이 하면 되겠다. $ docker image tag --help Usage: docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] $ docker ima..
08. Docker Image Inspect 이번장에서는 좀 더 나아가 도커 이미지의 구성 방식에 대해 좀 더 자세히 살펴보도록 하자. 유니온 파일 시스템 이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다. (Immutable). 이는 도커 시스템이 기본적으로 유니온 파일 시스템을 사용하기 때문이다. 유니온 마운트 는 병합 마운트라고 알려진 기술로 동일한 디렉토리에 여러 파일시스템을 마운트하는 기술이다. 핵심은 "먼저 마운트된 것을 살려둔 상태로 추가적으로 마운트하는 것" 으로 겹치는 것(폴더, 파일)이 있으면 나중 것을 덮어쓴다. 간단히 아래와 같이 /mnt 폴더를 유니온 마운트 하였다고 가정해 보자. $ mount /dev/sdb /mnt $ mount --union /dev/sdc /m..
07. Docker Image 이번장에서는 docker image 관련하여 앞서 살펴본 내용을 좀 더 자세히 살펴보도록 하자. Docker Image 검색 Docker Image 는 앞서 살펴본 바와 같이 Docker 컨테이너의 템플릿이며 퍼블릭 도커 레지스트리인 https://hub.docker.com/ 에서 도커 레포지토리 를 검색가능 하며 Docker Search 명령을 사용하여 검색할 수 있다. Web 에서 검색하기 https://hub.docker.com/explore/ 페이지의 찾기 버튼에서 ubuntu 입력하면 검색 결과로 ubuntu 라는 이름이 포함된 레포지토리들이 검색된다. 이중 ubuntu 라는 레포지토리로 들어가보면 Repo Info 탭에서 보면 해당 이미지에 대한 설명과 이미지를 다운로드 받을 수 있는 도커 명..