본문 바로가기
  • 오늘처럼

소프트웨어 아키텍처74

리눅스 환경(온라인)에 도커 설치하기 도커는 리눅스 컨테이너 기술을 사용하여 컨테이너를 구동하게 해주고, 추가로 컨테이너 이미지를 빌드하고 저장소에 pull/push가지 할수 있게 해주는 오픈소스 프로젝트이다. 물론 상용화 버전도 존재하며, 초기 리눅스 환경에서 사용되는 것을 넘어서 가상 머신 등을 이용하여 윈도우즈 운영체제 등에서도 사용되고 있다. 최근에는 윈도우 컨테이너라는 개념까지 등장하여 컨테이너 서비스의 사용 사례가 늘어나고 있다. 이번에는 리눅스 환경에 도커를 설치하고 설정을 적용하는 방법에 대해 다루어보자. 앞에서 언급한 윈도우 컨테이너의 개념, 윈도우에서의 리눅스 컨테이너 사용에 대한 부분도 추후에 다뤄보기로 한다. 설치 과정은 다음의 단계로 구성된다. 기존 도커 패키지 삭제 도커 패키지 설치 도커 설정 파일 확인 도커 서비스.. 2021. 9. 24.
git 변경사항 커밋 전에 수정/취소하기 Git 을 사용하여 작업을 진행할 때, 변경된 사항을 앚기 commit 하지 않고 다시 원래 상태로 돌리고 싶은 경우 아래의 명령어를 사용할 수 있다. git reset git checkout . git clean -dfx 명령줄의 내용 중 clean 명령의 경우 다음과 같이 d, f, x 플래그를 같이 주면 현재 추적되어 있는 파일들을 제외하고 (ignore 처리된 파일까지) 모든 파일을 삭제해준다. root@localhost:~# git clean -h usage: git clean [-d] [-f] [-n] [-q] [-e ] [-x | -X] [--] ... -q, --quiet do not print names of files removed -n, --dry-run dry run -f, --fo.. 2021. 9. 23.
Docker - data directory 변경하기 Kubernetes 클러스터의 컨테이너 런타임으로 많이 사용되는 docker 는, 최초 apt/yum 등의 패키지 관리툴로 설치하게 되면 데이터 디렉토리를 별도로 묻지 않고 기본 값으로 설정한다. 이 기본 경로는 '/var/lib/docker' 디렉토리로 이 경로 하위에 컨테이너의 물리적 이미지를 저장하고 또 컨테이너가 구동되었을 때 이미지 레이어 외의 컨테이너 레이어 정보를 저장하게 된다. 여기서는 docker 의 기본 데이터 디렉토리를 변경하는 방법에 대해 정리한다. Docker data directory 확인하기 docker 데몬이 구동될 때 초기 설정(1-1 항목 참조)을 이용하여 구동되며 해당 설정은 다음의 명령어로 확인할 수 있다. [root@localhost:/] docker info | g.. 2021. 9. 23.
Docker registry API - pull Docker Image 의 파일시스템 컨테이너 이미지를 저장하는 Docker Registry 를 통해 저장소에 이미지를 pull, push 할 수 있다. 'docker pull / docker push ' 명령어로 이루어지는 이러한 pull, push 는 내부적으로는 docker registry api 를 여러 번 호출하는 과정으로 구현된다. 이번에는 Docker Registry 가 제공하는 API 를 이용하여 docker pull 명령어를 구현해본다. 호출하는 API는 모두 공식 도커 해당문서에서 확인할수 있다. docker registry 의 API 를 알아보기 전에 먼저 도커 레지스트리에 이미지가 저장되는 구조에 대해서 정리해보자. 자세한 내용은 해당 블로그의 포스팅을 참조하자. 멀티 레이어로 구성.. 2021. 9. 22.
Container Network Interface : Weave -> Calico Kubernetes 의 CNI 플러그인은 가상의 네트워크 환경을 구현하여 클러스터 내부에서 파드 간의 통신이 가능하게 해준다. 공통의 CNI 인터페이스에 맞춰 여러 플러그인이 존재하며 각각의 장단점을 가지고 있다. 그렇기에 클러스터를 운영하다보면 요건에 따라 CNI 플러그인을 변경해야 하는 경우도 발생한다. 이번에는 이런 CNI 플러그인의 마이그레이션을 진행해보자. Kubernetes 클러스터의 CNI 플러그인 변경(여기서는 제목과 동일하게 Weave에서 Calico 로 변경하는 과정을 예로든다)은 아래와 같은 과정으로 나눌 수 있다. 기존 네트워크 설정이 올바르게 작동되어 있는지 확인하기 Weave 삭제 Calico 설치 CNI 를 변경하는 과정에서 파드 간의 네트워크 통신이 단절될 수도 있으며, No.. 2021. 9. 16.
Troubleshooting - Calico 삭제 후 팟 생성 시 ContainerCreating 상태로 pending 되는 현상 현상 Kubernetes CNI(Container Network Interface) 로 Calico를 설치 했다가 다시 삭제한 후에, 팟(pods)을 생성 시 ContainerCreating 상태에서 그대로 멈춰(pending)있는 현상이 발생할 수 있다. 원인 이는 Calico 의 배포 파일(manifest : calico.yaml)에서 CNI 설치를 위한 초기화 컨테이너(Init Container)는 존재하지만, 삭제할 때 노드를 정리(Clean up)해주는 컨테이너가 없기 때문이다. 조치 Calico CNI 를 삭제한 후에는 클러스터 관리자가 개별 노드에 접속하여 calico 설정 파일을 삭제해줘야 한다. ### 개별 노드에 대해서 calico 설정 파일 삭제 rm -f /etc/cni/net.d/.. 2021. 9. 15.