각자 다른 기능을 수행하고 있는 수많은 컨테이너들을 어떻게 다 관리할까?? 예를 들어 컨테이너 엔진인 Docker은 하나의 서비스를 컨테이너로 가상화시켜 배포하는 역할만 할 뿐이다. 수많은 컨테이너들을 하나하나 다 관리하진 못한다. 컨테이너 관리자의 경우 컨테이너 관리 및 운영을 위해서 vm의 ssh로 접속해서 해당 vm이 실행되고 있는 컨테이너에 들어가서 일일히 관리해야 하는 불편함을 가지고 있다. 이를 해결하기 위해 Container Orcherstration Tool을 만들었다. 여러가지가 있지만 이중 대중적이고 많이 사용하는 것이 쿠버네티스이다. 그렇다면 쿠버네티스란? 알아서 컨테이너를 관리해주고, 알아서 장애를 막아주고, 알아서 가장 효율적으로 리소스를 관리/실행해주는 컨테이너 오케스트..
도커의 꽃이라고 할 수 있는 도커파일에 대해 알아보고 어떤 명령어가 있는지 어떻게 사용하는지 알아보도록 하겠다. Dockerfile이란 도커 이미지를 작성할 때 실행시키는 스크립트 파일이다. Dockerfile 작성하기 내 user에 들어가서 dockerfile을 작성해보겠다. vi 에디터를 통해 간단히 도커파일 커맨드를 적어보자. 파일 이름은 무조건 Dockerfile로 저장해야 한다. dockerfile.txt 이런거 안된다. FROM httpdCOPY ./webapp /usr/local/apache2/htdocsCMD ["httpd-foreground"] FROM기본이 될 이미지 지정. Dockerfile의 첫 번째 명령어로 사용되며 이후의 명령어들은 모두 이 기본 이미지 위에서 실행된다. ..
볼륨?? 내가 아는 소리 볼륨 이런 건가? 라고 생각할 수 있다. 물론 아니다. 볼륨이란 docker가 관리하는 특별한 디렉토리이다. 호스트 파일 시스템의 특정 디렉토리를 컨테이너 내부의 디렉토리와 연결하여 데이터를 공유하거나 영구적으로 저장할 수있다. 쉽게 말하자면 볼륨 연결은 폴더를 연결한다고 생각하면 된다. 우리가 아는 vi나 sudo 같은 명령어들이 docker 환경에선 최소 설치이므로 작동하지 않기에 직접 다운로드 받아야 한다. 번거로우므로 내 호스트에서 직접 파일을 수정해서 넘겨주면 더 편리한 접근이 가능하다. 볼륨 연결을 통해 얻을 수 있는 장점을 간단히 정리하겠다. 데이터 영속성: 컨테이너가 삭제되거나 재시작되어도 볼륨에 저장된 데이터는 유지된다.데이터 공유: 여러 컨테이너가 동일한..
이전 시간에 docker attach에 대해서 공부했다. 그러나 attach로 접근할 수 없는 경우가 있다. OS만 있는 컨테이너와 다르게 다른 command가 있는 컨테이너들은 단순히 attach로 리눅스 쉘에 접근할 수 없다. attach로 접근할 수 없는 이유 docker run -d -p 8080:80 httpd 이렇게 컨테이너를 실행시킨 후 docker attach [방금실행한 httpd ID] attach 명령어로 리눅스 쉘에 접근하려면 접근이 되지 않는다. 인터렉션 모드가 아니고 실행되는 명령어가 /bin/bash가 아니라 httpd-foreground이기 때문이다. 아 그렇다면 실행할 때 -it 옵션을 주면 되는건가? 이렇게 it를 붙여서 하더라도 프로세스가 죽어서 컨테이너가..
우분투 컨테이너 다운 및 실행docker run -d --name myubuntu ubuntu run을 한 다음 docker ps 를 했을 때 실행 중인 우분투 컨테이너가 보일거라고 생각할 수 있으나 해당 컨테이너는 실행과 동시에 종료되어 docker ps -a를 해야만 볼 수 있다. 왜일까?? Ubuntu 기본 이미지는 기본 명령이 없어서 실행 직후 종료되는 것이다.내부에 실행될 프로그램이 없으므로 종료된다. httpd는 내부에 아파치 프로그램이 무한루프로 돌고 있기 때문에 종료되지 않는다. 이미지 종료를 막기 위해선? docker run -dit --name myubuntu ubuntu it 옵션을 적용해야 한다. i : 표준 입력(STDIN)을 활성화한다. 이 옵션을 사용하면 컨테이너 내부에서..
포트포워딩이란? 포트포워딩은 네트워크에서 중요한 개념이다. 포트포워딩은 컴퓨터 네트워크에서 특정 포트로 들어오는 트래픽을 다른 포트로 전달하는 과정을 말한다. 포트포워딩을 통해 외부에서 내부 네트워크의 서비스에 접근할 수 있게 되며, 보안 설정과 네트워크 관리에 큰 도움이 된다. 우선 포트란 무엇일까? 포트는 컴퓨터 네트워크에서 특정 프로그램이나 서비스에 할당된 번호이다. 예를 들어 웹 서버는 기본적으로 80번 포트를 사용한다. 내부의 네트워크에선 여러 서비스를 각기 다른 포트로 접속하여 실행할 수 있지만 외부에서 이 서비스에 접근하기 위해선 특정 포트로 접속하는 것이 일반적인 방법이다. 따라서 외부에서 내부 네트워크의 서비스에 접근하기 위해 포트포워딩이 필요한 것이다. 요즘 내가 많이 ..
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 우리가 하나의 컴퓨터 안에 여러 개의 환경을 두고 싶을 땐 어떻게 할까? 바로 가상 머신을 사용하면 된다. 윈도우 컴퓨터라도 가상 환경에서 실행을 하게 되면 리눅스 체제를 깔 수도 있다. 가상 환경이란 쉽게 말해서 컴퓨팅 환경을 소프트웨어로 구동한 것이다. vmware와 같이 가상 환경에서 실행하는 가상 머신의 조건은 아래와 같다.요건설명등가성VMM 상에서 동작하는 프로그램은 실제 머신 상에서 직접 실행한 경우와 본질적으로 같은 행동을 보여야 함자원 관리VMM은 가상화된 자원을 완전히 그 관리 하에 두어야 함효율성대부분의 기계 명령을 VMM의 개입없이 실행할 수 있어야 함 이런가상 머신의 장점은 높은 수준의 격리, 하드웨어 종속 애플리케이션, 강력한 ..