컨테이너 개조

728x90
반응형

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스

 

 

컨테이너 개조란

  • 컨테이너를 개조하는 방법을 배운다.

 

컨테이너를 개조하는 방법

  • 컨테이너를 개조하는 방법은 2가지가 있다.
    • 이전 장에서 배운 파일 복사와 마운트를 이용하는 방법
    • 컨테이너에서 리눅스 명령어를 실행하는 방법. 소프트웨어를 설치하거나 설정을 변경할 수 있다.

 

컨테이너에서 명령어를 실행하려면 셸이 필요하다

  • 컨테이너에서 리눅스 명령어를 실행하려면 리눅스에 우리의 명령을 전달해주는 프로그램인 shell(셸)이 필요하다.
  • 대부분의 컨테이너에는 bash shell이 설치되어 있다.
  • 컨테이너를 아무 설정 없이 실행하면 bash가 동작하지 않은 상태로 실행된다. 그러므로 bash를 실행해 우리의 명령을 입력받을 수 있는 상태로 만들어야 한다.
  • bash를 실행하려면 /bin/bash 인자를 입력한다. 사실 우리는 이전 장들에서 몇 번 사용했다.
  • /bin/bash는 docker run, docker exec 커맨드와 함께 사용한다.
  • docker exec은 컨테이너 속에서 명령어를 실행하는 커맨드이다. docker exec 옵션 컨테이너_이름 /bin/bash
    • 실행 중인 컨테이너에 run 커맨드를 사용할 수는 없으므로 exec 커맨드를 사용한다.
  • docker run 커맨드는 컨테이너에 들어있는 소프트웨어(ex. 아파치)를 실행하는 대신 bash가 실행되므로 컨테이너는 실행 중인데 소프트웨어는 실행 중이 아닌 상태가 된다. docker run 옵션 이미지_이름 /bin/bash
    • bash를 사용한 컨테이너 조작이 끝나고 나면 다시 docker start 커맨드로 컨테이너를 재시작해야 한다.
  • 보통 docker exec 커맨드를 주로 사용한다.
  • bash가 실행되면 셸에 입력된 명령은 도커 엔진이 아니라 해당 컨테이너로 전달된다. 그래서 프롬프트도 바뀐다.
  • bash를 통해 컨테이너 내부를 조작하는 동안에는 도커 명령을 사용할 수 없다.
  • 컨테이너 안에서 할 일을 마치면 exit 커맨드를 통해 컨테이너 밖으로 나올 수 있다. 그러면 다시 도커 엔진에 명령을 내릴 수 있다.

 

 

도커의 구조

  • 도커 엔진을 통해야 하는 명령과 컨테이너 안에서 실행해야 하는 명령의 차이를 알아본다.

 

도커 엔진을 통한 명령과 컨테이너 내부에서 실행하는 명령

  • 도커 엔진을 통해야 하는 명령은 도커 엔진 자체의 시작, 종료, 네트워크, 디스크 설정, 실행 중인 컨테이너 목록 확인 등 컨테이너 전체에 대한 관리 작업이다.
  • 컨테이너 내부에서 실행하는 명령은 컨테이너 속에 새로운 소프트웨어를 추가하거나, 컨테이너 속 소프트웨어의 실행 및 종료, 설정 변경, 컨테이너 안과 밖의 파일 복사 및 이동, 삭제 작업이다.

 

 

도커와 컨테이너는 별개의 언어를 사용한다

  • 도커의 경우 windows나 macOS 그리고 어느 계열의 리눅스인지에 따라 명령의 문법이 서로 다르다.
  • 컨테이너에 들어있는 '운영체제 비슷한 것'의 종류가 무엇이냐에 따라 컨테이너 내부에서 사용하는 명령어가 약간씩 달라지게 된다.
    • 예를 들어, 컨테이너 A가 데비안 계열(우분투)이고 컨테이너 B가 레드햇 계열(CentOS, Rocky Linux)을 사용한다면 똑같이 도커에서 실행 중인 컨테이너라도 컨테이너 내부에서 사용하는 명령의 스타일이 달라진다.
    • ex) 데비안 계열에서 아파치를 설치하는 명령 : apt install apache2, 레드햇 계열에서 아파치를 설치하는 명령 : yum install httpd
  • 대부분의 컨테이너는 데비안 계열이다.

 

 

 

728x90
반응형