본문 바로가기
  • 오늘처럼

소프트웨어 아키텍처/Docker14

Docker and container runtime 1. 컨테이너 컨테이너는 프로세스가 실행되는 루트를 변경해주는 chroot, 프로세스들의 자원을 제어하는 cgroup(control group), namespace 등의 개념을 이용하여 프로세스를 격리하여 소프트웨어 레벨에서 어플리케이션의 실행 환경을 구현해주는 서비스이다. Virtual Machine 에 비하여 가볍다는 장점이 있어서 2010년 중반 이후 널리 사용되고 있으나, 완전히 새로운 개념은 아니며 과거 Linux 개발자/관리자 사이에서 이미 내부적으로 사용하고 있었던 기능을 쓰기 쉽게 패키징 하였다고 볼 수 있다. (chroot 기능 자체가 이미 1979년 Unix version 7 에서 시스템콜로 구현되었다.) 컨테이너와 도커를 다루는 여러 자료를 보면 runc, lxc, cri-o 와 같이.. 2021. 8. 30.
Docker registry 내부 구조 Docker registry 내부 구조 이번에는 private registry에 도커 이미지를 저장하였을 때 이미지가 저장되는 구조에 대해서 살펴본다. 먼저 간단한 registry를 구동하는데, registry 내부의 디렉토리 구조를 살펴보기 위하여 docker volume(-v) 옵션을 이용하여 registry 내부의 데이터 디렉터리 경로를 호스트 환경으로 노출시켜서 구동하도록 하자. $ docker run -d --name=registry -p 5000:5000 -v $PWD/registry:/var/lib/registry registry:latest docker registry의 기본적인 데이터 디렉토리 위치는 /var/lib/registry 이며 해당 경로는 registry config 파일을 수.. 2018. 6. 21.
Docker registry service 2 Docker registry config docker registry를 사용하면, private 한 환경에서 image registry를 구축할 수 있다. 이번에는 단순하게 registry를 사용하는 것 뿐만 아니라 registry 를 배포하고 설정을 변경하여 실제 개발/운영 환경에서 사용하기 위한 추가사항에 대하여 다루어본다. 1. Registry 를 항상 재시작 하도록 설정 Docker registry 컨테이너가 구동되는 호스트가 재부팅 되거나, 호스트 내에서 docker process 가 재시작 될 경우 자동으로 registry 컨테이너가 구동되도록 할 경우, container 구동(run)시에 '--restart=always' 옵션을 추가할 수 있다. public registry를 사용하지 않고,.. 2018. 6. 20.
Docker registry service Docker registry 컨테이너를 이용하여 어플리케이션의 실행환경을 가상화하기 위해서 도커 이미지가 필요한 만큼 이미지의 관리 또한 중요하다. 특히 개발/운영 환경에서 CI/CD 를 적용하여 이미지를 배포 하는 경우에는 이미지를 로컬 환경에 보관하는 것보다 저장가능한 다른 저장소에 보관하는 것이 좋다. 도커 측은 사용자가 컨테이너 생성을 위한 이미지를 저장하고 다른 사용자들과 공유할 수 있도록 컨테이너 이미지에 대한 저장소(이하 registry) 서비스를 제공하고 있다. 이를 통하여 사용자는 쉽게 이미지를 registry에 저장(push)하고 필요한 이미지를 받아올(pull) 수 있다. 이러한 registry 서비스는 공개유형에 따라 public, private 으로 구분 가능하다. public r.. 2018. 6. 17.
Docker image 1. 도커 이미지 구조 도커 이미지는 HostOS에서 컨테이너를 구동하기 위해 필요한 프로그램, 소스, 유틸리티 등의 모음이다. 이미지를 이용하여 컨테이너를 생성하게 되는데 이는 위의 그림처럼 자바에서의 '클래스', '인스턴스'의 개념으로 이해하면 쉽다. 흔히 자바를 공부할 때 붕어빵과 붕어빵틀의 예를 많이 보게된다. 자바 클래스를 이용하여 자바 인스턴스를 생성하는 것과 유사하게 도커 이미지를 이용하여 도커 컨테이너를 생성한다고 이해해도 좋다. 이러한 도커 이미지는 서로 다른 파일시스템으로 구성되어있다. '서로 다른 파일시스템' 이라는 말에 쉽게 이해가 되지 않을 수 있는데 이를 위해 구조적으로 나타내면 아래와 같다. 위의 경우 서로 다른 3개의 층으로 구성되어 있는 스택(층) 구조로 도커 이미지를 표현.. 2018. 6. 15.
Dockerfile Best Practice Dockerfile Best Practice 도커 컨테이너를 만들기 위해 사용되는 도커 이미지는 Dockerfile 을 통해서 생성할 수 있다. 물론 commit 명령어를 이용하여 동적으로 컨테이너로부터 이미지를 생성할 수도 있지만, 이미지의 효율적인 관리를 위해서 commit을 사용하는 것보다는 Dockerfile 을 이용하여 이미지를 생성하는 것이 좋다. 여기서는 Dockerfile을 작성할 때 유의해야 하는 사항들에 대하여 정리한다. (해당 내용은 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ 의 링크를 참조하였습니다.) 설치 구성의 최소화컨테이너는 효율적인 리소스 사용 및 배포의 자동화를 위해, 사용량을 고려하여.. 2018. 6. 14.