[Linux] 컨테이너

haryun·2022년 11월 10일
0

Linux

목록 보기
3/16
post-thumbnail

리눅스에서 컨테이너 사용하기

1. 컨테이너란?

hostOS와 커널을 공유하며 격리된 환경에서 프로세스를 실행하는 가상화 기술이다. 독립적인 운영체제 수준의 가상화 기술로 '초경량 가상 서버'라고 생각하면 될 듯 하다. (격리된 환경에서 사용하므로 다른 컨테이너에 영향을 주지 않는다.)

보통 가상화라고 한다면 hostOS에 다수의 guestOS를 설치하여 운용하는 기술을 의미하지만 리눅스 컨테이너는 하나의 리눅스 시스템에서 프로세스를 독립적으로 분리하여 환경을 구축하는 것을 의미한다.

🤔 말이 길어질수록 의미가 불분명해지는 것 같다,, 그러니까 컨테이너란 리눅스 시스템에서 프로세스를 분리하여 사용하는 것이고, 해당 프로세스는 독립적인 리눅스 환경을 갖추고 있다! 라는 의미로 이해해야겠다.

컨테이너 기술은 시스템 컨테이너와 애플리케이션 컨테이너로 나누어진다.

  • 시스템 컨테이너: LXC, LXD -> 다수의 프로세스가 하나의 환경을 공유
  • 애플리케이션 컨테이너: Doker(도커는 LXC를 기반으로 개발됨)

2. 컨테이너의 역할

결국 컨테이너를 통해 무엇을 하는건지가 중요한 것 같다. 컨테이너는 다음과 같은 특징을 가진다.

  • 쉽고 빠른 생성 (OS 입장에서는 프로세스를 실행하는 것과 마찬가지이므로 빠른 처리가 가능하다.)
  • 가벼운 성능
  • 적은 오버헤드
  • 뛰어난 이식성 (파일 형태로 환경이 구성되어있어 공유가 쉬움)

이와 같은 기능을 갖춘 컨테이너를 활용하여 서버에서 실행되는 애플리케이션별로 독립적인 환경을 구축하여 테스트, 운영, 배포 등이 가능하다.

3. LXC를 통해 컨테이너 생성하기

🤔 이번엔 ubuntu와 centOS에서 LXC를 실행하여 컨테이너를 생성해보았다.

1) ubuntu

- ubuntu
$ lxc-create -n [컨테이너 이름] -t [사용할 템플릿]

-n 플래그는 컨테이너의 이름을 지정하고, -t는 컨테이너 템플릿을 지정한다.
만약 템플릿 부분에서 에러가 난다면 /usr/share/lxc/templates/ 디렉토리에서 사용가능한 템플릿 목록을 확인해야한다.

해당하는 템플릿이 없다면

- ubuntu
$ apt install lxc-templates

명령으로 다운받으면 된다! (내가 그랬음)

컨테이너를 생성하는 시간이 생각보다 오래 걸린다. 조금 기다리면 위와 같이 로그인시 사용할 패스워드를 알려주며 생성이 완료된다! 초기 설정은 username과 password 모두 'ubuntu' 이다.

2) centOS

- centOS
$ lxc-creat -n [컨테이너 이름] -t [사용할 템플릿]

동일하게 컨테이너를 생성하면 패스워드가 저장된 위치를 알려주는 메세지가 출력된다.

/var/lib/lxc/컨테이너이름/tmp_root_pass 파일을 열어 패스워드를 확인할 수 있다.

3) 컨테이너 실행 및 접근

$ lxc-start -n [컨테이너 이름]

컨테이너 생성 후 상태를 확인해보면 STOPPED인 것을 확인할 수 있다. 위 명령을 통해 상태를 RUNNING 으로 활성화시켜준다.
(-d 옵션을 붙이면 컨테이너 실행 후 대화형 세션을 열지 않도록 해준다.)

$ lxc-attach -n [컨테이너 이름]

해당 명령으로 컨테이너에 접근한다.
정상적으로 작동한다!

0개의 댓글