Infra/Docker

    Docker Swarm (도커 스웜 모드)

    Docker 스웜 도커의 스웜에는 2가지의 버전? 모드? 가 존재한다. 첫번째로는 도커 1.6버전부터 나왔으며 컨테이너로서의 스웜이다. 두번째는 도커 1.12 버전 부터 나온 도커 스웜 모드이다. 이하 컨테이너로서의 스웜은 간편하게 '스웜 클래식' 으로 바꿔서 작성하겠다. 차이점 두 버전의 가장 큰 차이점은 사용하는 목적이다. 스웜 클래식은 하나의 지점에서 컨테이너를 관리하는 측면이다. 그러므로 스웜 클래식은 docker run, docker ps 등 일반적인 도커 명령어와 도커 API로 클러스터의 서버를 제어하고 관리할 수 있는 기능을 제공한다. 이에 비해 도커 스웜 모드는 MSA 적인 측면에서 컨테이너를 다루기 위한 클러스터링 기능에 초점을 맞추고 있다. 기능으로는 같은 컨테이너를 동시에 여러 개 생..

    Docker Daemon (도커 데몬) - 1 [구조/-H/Remote Docker API]

    Docker Daemon (도커 데몬) - 1 [구조/-H/Remote Docker API]

    도커의 구조 도커의 위치는 /usr/bin/docker 에 위치한다. 컨테이너나 이미지를 다루는 명령어는 /usr/bin/docker에서 실행되지만, 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행되고 있다. 이는 docker 명령어가 실제 도커 엔진이 아닌 클라이언트로써으 도커이기 때문이다. 클라이언트 도커 (docker) - API를 사용할 수 있도록 CLI를 제공하는 것 - 사용자가 docker로 시작하는 명령어를 입력하면 도커 클라이언트에 전달 - 도커 클라이언트는 명령어를 로컬에 존제하는 도커 데몬에게 API로 전달 - 전달할 때, /var/run/docker.sock에 위치한 유닉스 소켓을 통해 도커 데몬의 API 호출 - tcp로 원격에 있는 도커 데몬을 제어하는 방법도 존..

    Dockerfile (도커 파일)

    도커 이미지를 빌드할 내용을 하나의 파일로 정의 해놓는 형태 - 사용시 명확히 어떤 프로그램의 어떤 버전을 썼는지 명시할 수 있어 추후 유지보수 / 재설치 할 때 편하다. 사용법 빈 디렉토리 안에 Dockerfile 이라는 이름의 파일을 만들어 내용을 작성하고 docker build -t {name}:{version} ./ 위의 명령어를 통해 빌드하면 로컬에 이미지가 생성된다. Dockerfile을 특정 파일로 명시하고 싶다면 -f {Dockerfile Name} 옵션을 추가하면 가능하다. - 도커를 빌드하는 과정에서 컨텍스트가 맨위의 디렉토리로부터 하위디렉토리까지 모든 파일을 읽어들이는데, 이과정에서 메모리 초과나 권한 에러가 뜰 수 있으니 위치와 도커파일은 하나씩 하는게 좋아보인다. 아니면 gitig..