Docker & Kubernetes

컨테이너 다루기(1/2)

beekei 2021. 11. 25. 16:51
반응형

 

대화형 모드로 컨테이너 기동 및 정지

 

일반적인 리눅스 서버에서는 유저가 로그인에 성공하면 이어서 셸이 기동된다.

그러면 터미널을 통해 셸에 명령어를 전달하고 수행 결과가 터미널에 출력된다.

도커에서도 컨테이너에서 셸을 실행할 수 있다.

 

 

대화형 모드로 컨테이너 기동(docker run -it)

대화형 모드로 컨테이너를 기동하기 위해서는 docker run -it 리포지터리명:[태그] 셸 과 같이 명령어를 실행해야 한다.

여기서 옵션 -i는 키보드의 입력을 표준 입력(STDIN)으로 셸에 전달하고 옵션 -t는 유서 터미널 디바이스(pts)와 셸을 연결한다.

옵션 --name은 컨테이너의 이름을 지정할 수 있다.

이로써 셸은 터미널과 접속되어있다고 인식하여 셸의 프롬프트를 출력하게 된다.

우분투나 CentOS에서는 bash를 지정할 수 있고, Alpine이나 BusyBox에서는 sh를 지정할 수 있다.

컨테이너 기동

@이후 문자는 컨테이너의 호스트명이자 컨테이너 ID이다.

전체 컨테이너 목록

NAMES에 지정한 컨테이너명으로 저장된 것을 확인할 수 있다.

만약 --name을 사용하지 않는다면 임의의 이름이 자동으로 할당된다.

 

 

대화형 모드에서 컨테이너 종료

대화형 모드로 기동한 컨테이너를 종료하기 위해서는 셸에서 exit를 입력하면 셸이 종료되면서 컨테이너도 종료된다.

대화형 모드에서 컨테이너 종료 


컨테이너 조작 및 이미지 작성

 

이번엔 레지스트리에 등록된 공식 이미지 우분투와 CentOS를 기동한 후 소프트웨어 패키지를 설치한 뒤 이미지로 저장해볼것이다.

 

실행중인 컨테이너는 IP 주소를 할당받고 이를 바탕으로 컨테이너 간 통신을 수행할 수 있다. 

네트워크 관련 패키지들을 설치하고 IP 주소를 표시해 보자

 

우분투는 데비안 계열의 배포판이므로 apt 명령어로 리눅스 패키지를 추가할 수 있다.

우분투 컨테이너 생성 후 패키지 install

CentOS는 레드햇 계열으 리눅스이기 때문에 yum 명령어를 사용한다.

CentOS7 컨테이너 생성 후 패키지 install

우분투 터미널에는 172.17.0.3, CentOS7 터미널에는 172.17.0.3이 출력되는것을 확인 할 수 있다.

서로 ping을 통해 통신이 되는것을 확인할 수 있으며, HTTP 통신도 가능하다.

 

이번엔 작업한 내용을 이미지로 만들어보자

우분투 이미지 생성
CentOS7 이미지 생성
이미지 목록

이런 방법을 사용해서 다양한 도구를 설치한 이미지를 미리 만들어 놓으면 필요할 때 편리하게 사용할 수 있을 것이란 생각이 들수도 있다.

하지만 나중에 이미지에 어떤 도구를 설치했는지 확인하기 어렵다.

그래서 컨테이너로부터 이미지를 만들지 않는 것이 좋다는 의견도 있다.

 

 

실행 중인 컨테이너의 IP 주소는 도커 커맨드로 확인할 수 있다.

명령어 docker inspect [옵션] 컨테이너명|컨테이너ID를 실행하면 컨테이너의 상세 정보를 JSON 형식으로 표시해준다.

컨테이너 상세 정보

 

반응형