docker
Docker/Kubernetes - (8) Docker Compose
Environment: Ubuntu 18.04 1. Docker Compose 다른 image로 이루어진 여러개의 container가 하나의 어플리케이션으로 동작시키려면 run명령어를 여러번 사용해야합니다. 하지만 이는 편리성 및 관리의 불편함이 있기 때문에 docker compose를 사용하게 됩니다. docker compose는 container를 이용한 서비스 개발과 CI를 위해 여러 개의 container을 하나의 project로 다룰 수있는 작업환경을 제공합니다. run명령어의 옵션을 모두 사용가능하면 swarm cluster처럼 서비스의 container수를 유동적으로 조절가능하며 container의 서비스 디스커버리도 자동으로 이루어집니다. 1.1 Docker Compose 설치 sudo c..
Docker/Kubernetes - (7) Docker Swarm
Environment: Ubuntu 18.04 1. Docker Swarm 지금까지 저희는 하나의 host에서만 docker engine을 구동하였습니다. 하지만 하나의 Host는 CPU, memory측면에서 자원의 한계를 가지므로 여러 대의 서버를 cluster로 만들어 자원을 병렬로 확장하여 사용해야 합니다. 이때 여러 대의 서버를 사용할 때나 또는 서버를 추가하고 싶을 때 container 할당에 대한 스케줄러, 로드 밸런스 문제 등 이런 문제를 해결하는 것이 바로 docker swarm과 swarm mode입니다. 2. Docker Swarm mode Swarm mode는 여러 대의 docker server를 하나의 클러스터로 만들어 container를 생성하는 여러 기능을 제공하고 특징점은 다음..
Docker/Kubernetes - (6) Docker daemon
Environment: Ubuntu 18.04 1. Docker daemon docker 그 자체에 대해서 알아보는 시간입니다. Docker의 구조는 크게 2가지로 나뉩니다. Docker server /usr/bin/dockerd 파일로 실행 container 생성 및 실행과 image 관리하는 주체 외부에서 API 입력을 받아 docker engine의 기능을 수행 docker process가 실행되어 서버로서 API 입력을 받을 준비가 된 상태를 docker daemon Docker client /usr/bin/docker 에서 실행 외부에서 API를 사용할 수 있도록 CLI제공 외부에서 API요청을 해당 clinet가 사용되며 client는 docker daemon에게 API 전달 Client는 /..
Docker/Kubernetes - (5) Dockerfile
Environment: Ubuntu 18.04 1. Dockerfile 이전 글과 같이 container에서 애플리케이션이 동작하는 환경을 만들면 일일이 container안에 들어가서 설치를 위한 수작업을 해서 image로 commit해야합니다. (위의 그림) 하지만 dockerfile를 사용한다면 추가해야하는 패키지, 명령어, 코드 등을 dockerfile에 저장해놓고 build를 통해 위의 작업을 간소화할 수 있습니다. (아래 그림) 1.1 Dockerfile 생성 다음과 같이 workspace라는 디렉터리와 예제 html, dockerfile를 만들어 봅시다. FROM: 생성할 이미지의 베이스가 될 image MAINTAINER: author 및 developer 정보 (docker 1.13.0이후..
Docker/Kubernetes - (4) docker image 이해 및 배포
Environment: Ubuntu 18.04 1. Docker image Docker는 다음과 같이 docker hub라는 중앙 이미지 저장소에서 image를 다운받습니다. Docker계정만 있으면 누구든 image를 올리고 내려받을 수 있습니다. 이외에도 docker container로 구현되어 있는 docker private registry로 개인 서버에 image를 저장할 수 있는 저장소를 만들 수 있습니다만 여기서는 docker hub만을 이용하겠습니다. 오늘은 다음과 같은 차례를 통해 docker image를 이해해보죠. docker image를 Host에서 생성 해당 image를 docker hub에 업로드 해당 image를 Host에서 pull 1.1 Docker image 이해와 생성 다..
Docker/Kubernetes - (3) docker container 네트워크/로깅/제한
Enviroment: Ubuntu 18.04 1. Docker container 네트워크 Docker는 컨테이너에 내부 IP를 순차적으로 할당하며, IP는 컨테이터 재시작마다 변경될 수 있습니다. 컨테이너 내부의 IP는 외부와 연결될 수 있도록 Host에 veth(virtual eth)라는 네트워크 인터페이스를 자동으로 만들게 됩니다. 그렇다면 각 컨테이너 마다 veth를 생성하게 되고 docker0이라는 브리지를 통해 veth인터페이스와 바인딩되어 호스트의 eth0과 연결시켜줍니다. 실제로 Host에서 container생성후 다음과 같이 veth와 docker0를 확인가능합니다. 1.1 Docker network 기능 docker networ ls로 Docker에서 기본적으로 쓸수 있는 네트워크를 확인..