MyDevLife (257) 썸네일형 리스트형 17. Docker Volume 앞서 도커 스토리지 부분을 살펴보았고 컨테이너 레이어에 데이터는 컨테이너의 실행이 끝나 컨테이너가 삭제되면 사라진다고 하였다. 그렇다면 데이터를 보존하려고 한다면 어떻게 해야 할까? 컨테이너에 영구 볼륨을 추가해야 한다. 그리고 이것이 도커 볼륨이다. Docker Volume 도커 볼륨은 /var/lib/docker/volumes/ 라는 디렉토리를 만들고 이를 컨테이너 내부 디렉토리에 마운트 해준다. 도커 볼륨을 생성하지 않으면 임시 디렉토리 이름을 도커가 만들고 배치하며 도커 볼륨을 docker volume create 명령으로 만들수도 있다. Docker Data Volume 도커 컨테이너 생성시 -v 옵션에 '컨테이너 디렉토리' 를 제공하는 방식이다. 이 경우 도커는 호스트의 /var/lib/doc.. 16. Docker Storage 이번장에서는 도커가 어디에 어떻게 데이터를 저장하는지, 컨테이너의 파일 시스템을 관리하는 방법을 살펴보자. File System 시스템에 도커를 설치할 때 시스템에 아래 폴더가 설치된다. 그리고 컨테이너와 관련된 모든 파일은 컨테이너 폴더에 저장되고 이미지와 관련된 파일은 이미지 폴더에 , 도커 컨테이너가 생성 한 모든 볼륨은 볼륨 폴더 아래에 생성된다. Layered architecture 도커는 이미지를 만들때 레이어 개념을 사용해서 데이터를 저장하고 다른 이미지를 만들때 저장한 캐시 레이어가 이미 있으면 이를 재사용한다. 컨테이너 실행시 이미지 레이어 정보는 Read Only 로 설정되고 더불어 컨테이너 레이어가 생성되며 이는 Read Write 레이어가 생성된다. 만약 사용자가 이미지 레이어에 있.. 15. Docker Network DNS Docker DNS 브릿지 네트워크에 속한 컨테이너가 서로 통신할 때 사실은 도커 호스트에 생성한 DNS 서버를 통해 서비스의 이름을 관리해주며 각 컨테이너가 이 DNS 서버를 확인하여 다른 컨테이너와 통신할 수 있게 된다. Docker DNS Round Robin 결국 도커 호스트에 DNS 서비스가 있으므로 라운드 로빈 서비스를 이용할 수 있고 도커에서 이를 기본으로 제공한다. 라운드 로빈이란 하나의 도메인에 여러개의 IP 주소를 등록해 요청 순서대로 각각 다른 IP 주소로 보내 (즉 다른 서버로 접속시켜) 부하를 분산하는 기술이다. 즉 Docker 컨테이너를 만들 때 두 개 이상의 컨테이너에 동일한 네트워크 별칭을 할당 할 수있는 옵션이 있어 컨테이너가 클라이언트 요청에 응답 할 수 있다. 이를 확인.. 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.. 이전 1 ··· 28 29 30 31 32 33 다음