소개
이 실습에서는 CentOS 7 환경을 구축하고 구성하는 방법을 배웁니다. 전통적인 방식으로는 VirtualBox 에서 전체 가상 머신을 사용할 수도 있지만, 이 실습에서는 Docker 컨테이너를 활용하는 보다 현대적이고 효율적인 방식을 사용합니다. 클라우드 기반 환경에서 가볍고 격리된 CentOS 7 컨테이너를 배포하여, 기존 가상 머신의 무거운 오버헤드 없이 기능적인 리눅스 시스템을 다루게 됩니다.
과정은 Docker Hub 레지스트리에서 공식 CentOS 7 이미지를 가져오는 것으로 시작합니다. 그런 다음 이 이미지를 기반으로 새 컨테이너를 생성하고 구성합니다. 마지막으로 GNOME 데스크톱 환경을 설치하고 그래픽 로그인을 활성화하여, 그래픽 사용자 인터페이스를 갖춘 완전한 CentOS 7 인스턴스를 구축하며 시스템을 맞춤 설정합니다.
VirtualBox 및 CentOS 7 ISO 다운로드 및 설치
이 단계에서는 CentOS 7 시스템을 확보하여 환경을 준비합니다. 원래 연습 문제에서는 VirtualBox 를 사용하여 전체 가상 머신을 설치하지만, 이 클라우드 기반 실습 환경에서는 Docker 컨테이너를 사용하는 것이 더 효율적이고 현대적인 접근 방식입니다. Docker 를 사용하면 컨테이너라고 불리는 가벼운 환경에서 격리된 애플리케이션과 운영체제를 실행할 수 있으며, 이는 기존 가상 머신보다 훨씬 빠르게 시작되고 리소스를 적게 사용합니다.
먼저 컨테이너 이미지의 공용 저장소인 Docker Hub 에서 공식 CentOS 7 이미지를 다운로드 (Docker 용어로 "pull") 하는 것부터 시작하겠습니다.
먼저 CentOS 7 이미지를 가져옵니다. docker pull 명령은 레지스트리에서 이미지를 가져옵니다. 이미지 이름으로 centos를, 태그로 CentOS 7 버전에 해당하는 7을 지정합니다.
터미널에서 다음 명령을 실행하십시오.
docker pull centos:7
다운로드 진행 상황을 보여주는 출력이 표시됩니다. Docker 는 이미지를 레이어 단위로 가져옵니다. 완료되면 출력 결과는 다음과 유사할 것입니다.
7: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
이미지 다운로드가 완료되었으므로 로컬 시스템에서 사용할 수 있는지 확인해 보겠습니다. docker images 명령을 사용하여 로컬에 보유한 모든 Docker 이미지 목록을 확인할 수 있습니다.
docker images
출력 결과에 태그가 7인 centos 항목이 포함되어야 합니다. IMAGE ID와 CREATED 날짜는 시스템에 따라 다를 수 있습니다.
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 eeb6ee3f44bd 2 years ago 204MB
CentOS 7 이미지를 성공적으로 다운로드했으므로, 다음 단계에서 이를 사용하여 컨테이너를 생성하고 실행할 준비가 되었습니다.
CentOS 7 을 위한 새 가상 머신 생성 및 구성
이 단계에서는 CentOS 7 환경을 생성하고 구성합니다. 전통적인 가상 머신 대신, 다운로드한 centos:7 Docker 이미지를 사용하여 컨테이너를 실행하겠습니다. 컨테이너는 이미지의 실행 중인 인스턴스입니다. 이것이 이번 실습의 남은 과정 동안 우리의 "가상 머신" 역할을 하게 됩니다.
docker run 명령을 사용하여 컨테이너를 생성하고 시작합니다. 몇 가지 중요한 옵션을 포함할 것입니다.
-it: 이 플래그 조합은 터미널을 컨테이너의 터미널에 연결하여 명령을 대화식으로 실행할 수 있게 해줍니다.--name centos_workstation: 나중에 관리 (시작, 중지, 삭제) 하기 쉽도록 컨테이너에centos_workstation이라는 기억하기 쉬운 이름을 할당합니다.centos:7: 실행하려는 이미지를 지정합니다./bin/bash: 컨테이너가 시작될 때 내부에서 실행될 명령입니다. Bash 쉘을 실행하여 명령 프롬프트를 제공합니다.
이제 다음 명령을 실행하여 CentOS 컨테이너를 시작하십시오.
docker run -it --name centos_workstation centos:7 /bin/bash
명령을 실행한 후 터미널 프롬프트가 변경된 것을 확인할 수 있습니다. 다음과 같이 표시될 것입니다.
[root@a1b2c3d4e5f6 /]#
이 새로운 프롬프트는 현재 사용자가 root 권한으로 CentOS 7 컨테이너 내부에 있음을 나타냅니다. 영문자와 숫자의 조합 (예: a1b2c3d4e5f6) 은 컨테이너의 고유 ID 입니다. 이제 더 이상 LabEx 호스트 환경의 쉘에 있지 않습니다.
원래 연습 계획에 따라 루트가 아닌 사용자를 생성해 보겠습니다. student1이라는 이름의 사용자를 생성합니다. 이를 위해 useradd 명령을 사용합니다.
useradd student1
다음으로 student1의 비밀번호를 설정합니다. 간단하게 비밀번호도 student1로 사용하겠습니다. passwd 명령을 실행하면 새 비밀번호를 입력하고 다시 입력하라는 메시지가 표시됩니다.
passwd student1
메시지가 나타나면 student1을 입력하고 Enter 를 누른 다음, 다시 student1을 입력하고 Enter 를 누릅니다.
Changing password for user student1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
이 단계를 완료하려면 기본 LabEx 터미널로 돌아가야 합니다. exit를 입력하고 Enter 를 눌러 컨테이너의 쉘에서 나갑니다.
exit
이 명령은 컨테이너를 중지하고 ~/project 디렉토리 프롬프트로 되돌려 보냅니다. centos_workstation 컨테이너는 이제 생성된 상태이며 향후 단계에서 다시 시작할 수 있습니다.
사용자 정의 파티션으로 CentOS 7 설치 수행
이 단계에서는 새로운 CentOS 7 환경을 구성합니다. 원래 연습 문제에는 사용자 정의 디스크 파티셔닝을 포함한 상세한 설치 과정이 포함되어 있습니다. 하지만 Docker 기반 환경에서는 이 과정이 다릅니다. 이미 빌드된 이미지를 사용하고 있기 때문에 "설치"는 이미 완료된 상태입니다. 또한 Docker 컨테이너는 호스트의 파일 시스템을 레이어 방식으로 사용하므로 /, /home, /var와 같은 파티션을 수동으로 생성하는 개념은 표준 컨테이너에 적용되지 않습니다.
대신, 새로운 시스템 배포 후 흔히 수행하는 작업인 실행 중인 컨테이너의 초기 구성에 집중하겠습니다. 컨테이너를 시작하고, 소프트웨어 패키지를 업데이트하며, 루트가 아닌 사용자가 관리 작업을 수행할 수 있도록 sudo를 설치할 것입니다.
먼저 이전 단계에서 생성한 컨테이너를 시작합니다. 현재는 중지된 상태입니다. docker start 명령을 사용하십시오.
docker start centos_workstation
이 명령은 컨테이너 이름인 centos_workstation을 출력하여 시작되었음을 확인해 줍니다. 이제 docker attach를 사용하여 터미널을 실행 중인 컨테이너에 연결합니다.
docker attach centos_workstation
터미널 프롬프트가 이전과 같이 컨테이너의 루트 쉘로 변경됩니다.
[root@a1b2c3d4e5f6 /]#
이제 필요한 서비스들을 구성하고 나중에 해결할 문제 상황들을 만들어 보겠습니다. 먼저 CentOS 7 의 지원 종료 (EOL) 로 인해 작동하지 않는 저장소 설정을 수정해야 합니다.
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all
최소 설치 버전의 CentOS 7 이미지는 매우 기본적인 기능만 갖추고 있습니다. CentOS 의 패키지 관리자인 yum을 사용하여 설치된 모든 패키지를 최신 버전으로 업데이트하는 것부터 시작해 보겠습니다. -y 플래그는 모든 확인 메시지에 자동으로 "yes"라고 응답합니다.
yum update -y
이 과정은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 완료되면 최소 이미지에 포함되어 있지 않은 sudo 패키지를 설치하겠습니다. sudo를 사용하면 허용된 사용자가 다른 사용자 (일반적으로 루트 사용자) 의 권한으로 명령을 실행할 수 있습니다.
yum install -y sudo
설치가 완료되면 앞서 생성한 student1 사용자에게 sudo 권한을 부여해야 합니다. CentOS 에서는 일반적으로 사용자를 wheel 그룹에 추가하여 이 작업을 수행합니다.
usermod -aG wheel student1
usermod는 사용자 계정을 수정하는 명령입니다.-aG플래그는 사용자를 보조 그룹 (이 경우wheel) 에 추가 (append) 하도록 명령에 지시합니다.
student1이 이제 sudo 권한을 가졌는지 확인하기 위해 해당 사용자로 전환하여 테스트해 보겠습니다.
su - student1
프롬프트가 [student1@a1b2c3d4e5f6 ~]$로 변경됩니다. 이제 sudo와 함께 whoami 명령을 실행해 보십시오. 결과가 root로 표시되어야 합니다.
sudo whoami
예상 출력 결과는 다음과 같습니다.
root
좋습니다! 이제 컨테이너에 업데이트된 시스템과 sudo 권한을 가진 사용자가 구성되었습니다. 다음 단계로 넘어가려면 컨테이너를 종료하되 백그라운드에서 계속 실행되도록 유지해야 합니다. exit를 입력하지 마십시오. 대신 Ctrl+P를 누른 다음 Ctrl+Q를 순서대로 누르십시오. 이렇게 하면 컨테이너는 계속 실행되는 상태에서 터미널만 컨테이너에서 분리되어 LabEx 프롬프트로 돌아옵니다.
GNOME 데스크톱 설치 및 그래픽 로그인 활성화
이 단계에서는 그래픽 데스크톱을 설치하려는 원래 연습의 목표를 현재 환경에 맞게 조정해 보겠습니다. 우리가 사용 중인 컨테이너 환경에서 GNOME 과 같은 전체 그래픽 사용자 인터페이스 (GUI) 를 설치하는 것은 일반적인 관행이 아닙니다. 컨테이너는 가볍게 설계되었으며 일반적으로 명령줄에서 관리됩니다.
대신, 관련 소프트웨어 패키지 그룹을 설치하는 동일한 기술을 연습하기 위해 공통 명령줄 도구 세트를 설치해 보겠습니다. 또한 새로운 환경에서 브라우저에 접속하려는 원래의 목표를 충족하기 위해 텍스트 기반 웹 브라우저를 설치할 것입니다.
먼저 실행 중인 컨테이너에 들어가야 합니다. 이전 단계에서 centos_workstation 컨테이너를 백그라운드에서 실행 중인 상태로 두었습니다. docker exec 명령을 사용하여 student1 사용자로 내부에서 새 쉘을 열겠습니다.
이미 컨테이너 내부에 있다면 이 명령을 건너뛰어도 됩니다.
docker exec -it centos_workstation su - student1
명령 프롬프트가 [student1@a1b2c3d4e5f6 ~]$로 변경되어 컨테이너 내부의 student1으로 로그인되었음을 나타냅니다.
이제 yum을 사용하여 "Development Tools" 패키지 그룹을 설치해 보겠습니다. 이 그룹에는 gcc, make, git과 같이 소스 코드에서 소프트웨어를 컴파일하는 데 필수적인 도구들이 포함되어 있습니다. student1은 sudo 권한이 있으므로 이 설치를 수행할 수 있습니다. -y 플래그는 모든 프롬프트에 자동으로 "yes"라고 응답합니다.
sudo yum groupinstall -y "Development Tools"
이 설치 과정은 많은 패키지를 다운로드하고 설치하므로 완료하는 데 몇 분 정도 걸릴 수 있습니다. 패키지가 설치됨에 따라 많은 출력 내용이 표시될 것입니다.
다음으로 설정을 마무리하기 위해 가벼운 텍스트 기반 웹 브라우저인 lynx를 설치하겠습니다. 이는 명령줄에서 직접 웹사이트를 빠르게 확인하거나 파일을 다운로드할 때 유용한 도구입니다.
sudo yum install -y lynx
lynx 설치는 매우 빠르게 완료될 것입니다. 간단한 웹사이트에 접속하여 새 브라우저를 테스트해 보겠습니다.
lynx example.com
터미널에 example.com 홈페이지의 텍스트 내용이 렌더링되어 표시됩니다. 화살표 키를 사용하여 탐색할 수 있습니다. lynx를 종료하려면 키보드에서 q 키를 누르십시오. 종료 확인 메시지 (Are you sure you want to quit? [Y/N]) 가 나타나면 y를 누릅니다.
이제 중요한 개발 도구와 명령줄 브라우저를 갖춘 CentOS 환경을 성공적으로 구성했습니다. 이 실습을 마치려면 컨테이너에서 나갑니다.
exit를 입력하여 student1 사용자에서 로그아웃하고, 다시 exit를 입력하여 컨테이너의 쉘을 떠나 기본 LabEx 터미널로 돌아갑니다.
exit
exit
요약
이 실습에서는 Docker 를 사용한 현대적인 컨테이너 기반 방식으로 CentOS 7 환경을 구축하는 방법을 배웠습니다. 먼저 docker pull centos:7 명령을 사용하여 Docker Hub 공용 레지스트리에서 공식 CentOS 7 이미지를 가져오는 것으로 시작했습니다. 그런 다음 docker images 명령으로 로컬의 모든 Docker 이미지 목록을 확인하여 이미지가 성공적으로 다운로드되어 로컬 시스템에서 사용 가능한지 확인했습니다.
이 초기 설정은 이 이미지를 사용하여 컨테이너를 생성하고 실행하는 후속 단계의 기초가 되었습니다. 전반적인 목표는 가볍고 효율적인 Docker 컨테이너 내에서 사용자 정의 구성 및 GNOME 그래픽 데스크톱 환경 설치를 포함한 완전한 CentOS 7 설치 과정을 수행하는 것이었습니다.



