Skip to Content
자격증리눅스마스터 2급 1차00. 부록: 실습 환경 만들기 (Docker + Rocky Linux)

이번 문서의 목표: 터미널을 열어 본 적이 없어도 이 문서를 따라오면 리눅스 명령을 직접 쳐 볼 수 있는 환경을 갖춘다. 02편부터는 이 환경이 있다는 전제로 실습 블록이 나온다.

0. 왜 필기시험인데 손으로 쳐야 하는가

리눅스마스터 2급 1차는 객관식 사지선다 시험입니다. 그런데도 이 시리즈는 실습을 강하게 권합니다. 이유는 단순합니다. 권한 문자열과 명령 옵션은 눈으로만 봐서는 헷갈립니다.

rwxr-x---가 8진수로 750인지 754인지, ls -alls -la가 다른 결과를 내는지, ps auxps -ef의 출력 열이 어떻게 다른지 — 이런 것들은 설명을 읽을 때는 이해가 된 것 같다가도, 시험장에서 비슷한 선택지 네 개가 나란히 있으면 순간 헷갈립니다. 직접 한 번 쳐서 눈으로 확인한 기억은 그 갈림길에서 정답을 가르는 힘이 됩니다.

그래서 이 부록에서는 여러분의 컴퓨터 안에 진짜 리눅스 하나를 띄웁니다. Windows나 macOS를 지우거나 새로 파티션을 나눌 필요는 없습니다.

1. Docker가 무엇인가

1-1. 컨테이너라는 개념

Docker는 내 컴퓨터 안에 리눅스 한 대를 가볍게 띄우는 도구입니다. 이렇게 띄운 리눅스 환경을 컨테이너라고 부릅니다.

비유하자면 이렇습니다. 여러분의 Windows나 macOS는 이미 켜져 있는 하나의 큰 방입니다. Docker는 그 방 안에 작은 텐트를 하나 치는 일과 비슷합니다. 텐트 안에서는 리눅스 명령어를 마음껏 실행할 수 있고, 텐트를 걷어도 바깥 방(Windows·macOS)은 전혀 영향을 받지 않습니다. 텐트가 마음에 안 들면 걷고 새로 치면 됩니다. 몇 초면 됩니다.

1-2. 가상 머신과 무엇이 다른가

리눅스를 체험하는 또 다른 방법으로 가상 머신(Virtual Machine, VM)이 있습니다. VirtualBox 같은 프로그램으로 컴퓨터 한 대를 통째로 흉내 내는 방식입니다. VM은 가상의 하드디스크·가상의 메모리·가상의 CPU까지 전부 준비한 뒤 그 위에 운영체제를 처음부터 설치합니다. 설치에 시간이 걸리고(보통 10~20분), 디스크 용량도 수 기가바이트 이상을 씁니다. 대신 진짜 컴퓨터 한 대와 거의 똑같이 동작하므로, 디스크를 파티션으로 나누거나 그래픽 화면(X 윈도)을 띄우는 것처럼 하드웨어 수준의 실습이 가능합니다.

컨테이너(Docker)는 하드웨어를 흉내 내지 않습니다. 이미 켜져 있는 Windows·macOS의 커널 기능을 빌려서, 그 위에 리눅스 프로그램들이 담긴 껍데기만 하나 만듭니다. 그래서 뜨는 데 몇 초밖에 안 걸리고, 용량도 수백 메가바이트 수준입니다. 대신 실제 디스크 파티션을 나누거나 그래픽 화면을 띄우는 것 같은 하드웨어 수준의 작업은 할 수 없습니다.

구분컨테이너(Docker)가상 머신(VirtualBox)
뜨는 속도수 초수 분에서 수십 분(설치 포함)
디스크 사용량수백 메가바이트수 기가바이트 이상
하드웨어 흉내안 함(커널 공유)함(가상 CPU·디스크·메모리)
파티션·마운트·X 윈도 실습안 됨
이 시리즈에서 쓰는 비중24개 본론 편 중 20편04·10·18·22편(선택)

이 시리즈는 컨테이너를 주력으로 삼습니다. 리눅스마스터 2급 1차는 응시 자격 제한이 없어 완전 입문자가 많이 도전하는 시험인데, ISO 파일 10기가바이트를 받고 VM 설정과 씨름하다 지쳐 공부를 시작도 못 하면 손해이기 때문입니다.

2. Docker 설치

2-1. Windows

WSL2 확인

Docker Desktop은 Windows에서 동작하기 위해 WSL2(Windows Subsystem for Linux 2)라는 기능이 필요합니다. WSL2는 Windows 안에서 리눅스 커널을 실행할 수 있게 해 주는 Microsoft의 기능입니다. Windows 10 버전 2004 이상, Windows 11이라면 대부분 이미 준비되어 있거나 설치 과정에서 자동으로 켜집니다.

Docker Desktop 다운로드

https://docs.docker.com/desktop/  에 접속해 Windows용 설치 파일을 내려받습니다.

설치 진행

설치 마법사를 따라가다 보면 “Use WSL 2 instead of Hyper-V”(WSL2를 사용하도록 설정) 같은 체크박스가 나옵니다. 기본값 그대로 두고 넘어가면 됩니다. 설치가 끝나면 컴퓨터 재시작을 요구할 수 있습니다.

Docker Desktop 실행

설치 후 Docker Desktop 아이콘을 눌러 실행합니다. 화면 오른쪽 아래(작업 표시줄) 고래 모양 아이콘이 뜨고 움직임이 멈추면 준비가 끝난 것입니다.

2-2. macOS

같은 페이지 https://docs.docker.com/desktop/  에서 내려받되, 내 컴퓨터의 CPU 종류에 맞는 파일을 골라야 합니다.

CPU 종류확인 방법받을 파일
Apple Silicon(M1·M2·M3·M4 등)애플 메뉴 – 이 Mac에 관하여에서 칩 이름이 Apple M으로 시작Apple Silicon용
Intel칩 이름이 “Intel”로 시작Intel Chip용

받은 .dmg 파일을 열어 Docker 아이콘을 Applications 폴더로 끌어다 놓으면 설치가 끝납니다.

2-3. 터미널을 여는 법

지금부터는 터미널(터미널, 명령 프롬프트)이라는 프로그램에 직접 명령을 입력합니다. 터미널은 마우스로 아이콘을 누르는 대신, 글자로 된 명령을 한 줄씩 입력해 컴퓨터에 일을 시키는 화면입니다.

  • Windows: 작업 표시줄의 검색창(돋보기 아이콘 또는 Windows 키)을 누르고 PowerShell이라고 입력한 뒤, 나오는 “Windows PowerShell”을 클릭해 실행합니다.
  • macOS: 화면 오른쪽 위 돋보기 아이콘(Spotlight)을 누르고 terminal이라고 입력한 뒤, 나오는 “터미널” 앱을 클릭해 실행합니다.

검은 배경이나 흰 배경에 글자 커서가 깜빡이는 창이 뜨면 준비가 된 것입니다. 이제 이 창에 명령을 입력하고 Enter 키를 누르면 됩니다.

2-4. 설치 확인

터미널에 다음을 입력합니다.

docker --version

버전 번호(예: Docker version 27.x.x)가 출력되면 설치가 정상적으로 끝난 것입니다. command not founddocker는 내부 또는 외부 명령... 아닙니다 같은 메시지가 나오면 Docker Desktop이 아직 실행되지 않았거나 설치가 덜 된 것이니 2-1·2-2를 다시 확인하세요.

3. Rocky Linux 컨테이너 띄우기 — 주력 환경

터미널에 다음 한 줄을 입력합니다.

docker run -it --name rocky rockylinux/rockylinux:9 bash

3-1. 명령 조각 하나씩 뜯어보기

조각
dockerDocker 프로그램을 실행한다는 뜻
run새 컨테이너를 만들어서 바로 실행한다
-it화면과 키보드를 컨테이너에 연결한다(이게 없으면 명령을 쳐도 반응이 없다)
--name rocky이 컨테이너에 rocky라는 이름을 붙인다(나중에 다시 찾아 들어갈 때 이 이름을 쓴다)
rockylinux/rockylinux:9어떤 리눅스 이미지를 쓸지 지정한다(아래 3-2 참고)
bash컨테이너 안에서 무엇을 실행할지(bash는 명령을 입력받는 셸 프로그램)

3-2. 왜 rockylinux:9가 아니라 rockylinux/rockylinux:9인가

인터넷 예제 대부분이 docker run -it rockylinux:9 bash처럼 짧은 이름을 씁니다. 이 이름은 도커 허브의 공식 이미지(rockylinux)를 가리키는데, 확인해 보면 이 이미지는 2024년 5월 30일 이후로 갱신되지 않고 있습니다. 반면 Rocky Linux 프로젝트가 직접 관리하는 rockylinux/rockylinux 이미지는 2026년 7월 12일에도 갱신되어 계속 관리되고 있습니다. 그래서 이 시리즈는 앞에 rockylinux/가 붙은 쪽을 씁니다. 다른 자료를 보다가 rockylinux:9만 쓰여 있다면, 낡은 예제일 가능성이 크다고 의심하세요.

3-3. 성공했는지 확인하는 법

명령을 실행하면 이미지를 내려받는 진행 표시가 잠깐 나온 뒤, 프롬프트가 다음과 같은 모양으로 바뀝니다.

[root@a1b2c3d4e5f6 /]#

이 프롬프트를 읽는 법은 이렇습니다.

  • root: 지금 로그인한 사용자 이름(컨테이너 안의 관리자 계정)
  • a1b2c3d4e5f6: 이 컨테이너의 고유 번호 일부(호스트 이름 역할)
  • /: 지금 위치한 디렉터리(루트 디렉터리)
  • #: 관리자 권한으로 로그인했다는 표시(일반 사용자라면 $)

이 프롬프트가 보이면 여러분은 지금 진짜 리눅스 안에 들어와 있는 것입니다. ls, pwd 같은 명령을 아무거나 입력해서 반응이 오는지 확인해 보세요.

4. 컨테이너 드나들기 — 초보자가 가장 많이 막히는 곳

4-1. 나가기

exit

컨테이너 안에서 exit를 입력하면 다시 Windows·macOS의 터미널로 돌아옵니다. 이때 컨테이너는 사라지는 것이 아니라 멈춘 상태(정지)로 남습니다.

4-2. 다시 들어가기

멈춘 컨테이너를 다시 켜고 들어가려면 두 단계가 필요합니다.

docker start rocky docker exec -it rocky bash

start는 멈춘 컨테이너를 다시 켜는 것이고, exec -it ... bash는 켜진 컨테이너 안에 새로 셸 하나를 열어 접속하는 것입니다.

4-3. docker run을 또 치면 안 되는 이유

이미 rocky라는 컨테이너가 있는 상태에서 다시 3장의 docker run --name rocky ... 명령을 실행하면, 이런 오류가 납니다.

docker: Error response from daemon: Conflict. The container name "/rocky" is already in use by container "..."

run새 컨테이너를 만드는 명령이기 때문에, 이미 같은 이름이 있으면 이름 충돌로 거부됩니다. 다시 들어가고 싶을 때는 run이 아니라 4-2의 start + exec를 씁니다.

4-4. 지금 있는 컨테이너 목록 보기

docker ps -a

-a(all)를 붙이면 멈춘 것까지 포함해 지금까지 만든 컨테이너를 전부 보여 줍니다. NAMES 열에서 이름을, STATUS 열에서 켜져 있는지(Up ...) 멈췄는지(Exited ...)를 확인할 수 있습니다.

4-5. 완전히 지우고 새로 시작하기

docker rm -f rocky

이 명령은 rocky 컨테이너를 강제로 멈추고 완전히 삭제합니다. 삭제한 뒤 3장의 docker run 명령을 다시 실행하면 깨끗한 상태의 컨테이너가 새로 생깁니다.

망가뜨려도 됩니다. 실습하다가 중요한 설정 파일을 잘못 지웠거나 시스템이 이상해졌다면, 고민하지 말고 docker rm -f rocky로 지우고 docker run으로 새로 만드세요. 5초면 원래 상태로 돌아옵니다. 진짜 컴퓨터라면 엄두도 못 낼 일을 컨테이너에서는 아무 부담 없이 할 수 있다는 것이, 컨테이너로 실습하는 가장 큰 장점입니다.

5. 데비안 계열 비교용 Ubuntu 컨테이너

docker run -it --name ubuntu ubuntu:24.04 bash

왜 필요한가

리눅스 배포판은 크게 레드햇 계열(Rocky Linux·CentOS 등, 패키지 관리에 rpm·dnf 사용)과 데비안 계열(Ubuntu·Debian 등, 패키지 관리에 dpkg·apt 사용)로 나뉩니다. 이 시리즈의 학습 방향을 정하며 기출·복원 문제 9종을 세어 본 결과, 레드햇 계열 관련 문항이 226건, 데비안 계열 관련 문항이 118건으로 데비안 계열이 전체의 약 34퍼센트를 차지했습니다. Rocky Linux 컨테이너 하나만으로는 apt·dpkg 실습이 불가능하므로, 비교용 Ubuntu 컨테이너를 따로 둡니다.

이 컨테이너는 17편(소프트웨어 설치)에서 씁니다. 같은 작업(예: 패키지 설치)을 Rocky에서는 dnf로, Ubuntu에서는 apt로 각각 해 보면서 두 계열의 명령 형식 차이를 직접 비교합니다.

6. systemd 실습용 컨테이너

일반 Rocky Linux 컨테이너 안에서 systemctl status 같은 명령을 치면 systemd가 동작하지 않는다는 오류가 납니다. 일반 컨테이너는 원래 부팅 과정을 거치지 않고 셸 하나만 바로 실행하기 때문에, 부팅 관리자인 systemd 자체가 켜져 있지 않습니다.

이 문제를 해결하려면 systemd를 미리 넣어 둔 특수 이미지를 씁니다.

docker run -d --name rocky-init --privileged rockylinux/rockylinux:9-ubi-init docker exec -it rocky-init bash
  • -ubi-init 태그가 붙은 이미지는 systemd를 부팅 시점에 함께 실행하도록 만들어져 있습니다.
  • -d는 화면에 붙지 않고 백그라운드로 켜 둔다는 뜻입니다(systemd는 계속 떠 있어야 하므로).
  • --privileged는 컨테이너에게 평소보다 넓은 권한을 준다는 뜻입니다. systemd는 원래 하드웨어에 가까운 권한(장치 제어, 프로세스 관리 등)을 요구하는데, 일반 컨테이너는 안전을 위해 이런 권한을 막아 둡니다. --privileged는 그 제한을 풀어 systemd가 정상적으로 뜨게 해 줍니다. 실제 서비스 운영 환경에서는 보안상 함부로 쓰면 안 되는 옵션이지만, 지금은 내 컴퓨터 안에서만 도는 학습용 컨테이너이므로 문제가 없습니다.

이 컨테이너는 05편(부팅과 런레벨)에서 systemctl 로 서비스 상태와 타깃(런레벨)을 조회하는 실습에 씁니다.

7. 가상 머신이 필요한 편

04·10·18·22편은 컨테이너로 실습할 수 없습니다. 각각 이유가 다릅니다.

주제컨테이너로 안 되는 이유
04편파티션 나누기실제 디스크 장치가 있어야 파티션을 나눌 수 있다. 컨테이너는 이미 파티션이 끝난 파일 영역만 빌려 쓴다
10편mount·fsck커널 수준의 마운트·파일시스템 검사 권한이 필요한데, 컨테이너는 이 권한을 공유하지 않는다
18편장치 파일(/dev)실제 하드웨어(디스크·시리얼 포트 등)에 대응하는 장치 파일이 있어야 의미가 있는데, 컨테이너에는 하드웨어가 없다
22편X 윈도그래픽 화면을 띄우는 환경 자체가 필요한데, 컨테이너는 화면 없이 텍스트만 주고받는 구조다

이 4개 편을 실습하려면 가상 머신이 필요합니다. 다만 이 과정은 선택입니다. 24개 본론 편 중 20편은 이미 Docker로 끝나며, 04편처럼 개념 설명이 중심인 편은 실습 없이 읽기만 해도 시험 대비에는 지장이 없습니다. 직접 VM에서 파티션을 나눠 보면 이해가 더 깊어지는 “선택 심화”로 받아들이면 됩니다.

VM을 만들어 보고 싶다면 아래 흐름을 따릅니다.

VirtualBox 설치

https://www.virtualbox.org  에서 내 운영체제(Windows·macOS)에 맞는 설치 파일을 내려받아 설치합니다.

Rocky Linux ISO 내려받기

https://rockylinux.org/download  에서 최신 버전의 x86_64 설치용 ISO 파일(보통 Minimal 또는 DVD 버전)을 내려받습니다. 용량이 수 기가바이트로 크므로 시간이 걸립니다.

새 가상 머신 만들기

VirtualBox를 열고 “새로 만들기”를 눌러 이름을 정하고, 종류는 Linux, 버전은 Red Hat(64비트) 계열로 지정합니다.

메모리·디스크 할당

메모리는 최소 2기가바이트 이상, 디스크는 최소 20기가바이트 이상을 권장합니다.

ISO로 부팅해 설치

만든 가상 머신의 설정에서 광학 드라이브에 내려받은 ISO 파일을 연결한 뒤 시작하면, Rocky Linux 설치 화면이 뜹니다. 화면 안내를 따라 설치를 진행합니다.

8. 안 될 때

증상원인해결
”WSL 2 installation is incomplete” 같은 오류Windows에 WSL2가 아직 준비되지 않음PowerShell을 관리자 권한으로 열고 wsl --install 실행 후 재부팅
Docker Desktop 아이콘을 눌러도 안 켜짐백그라운드 서비스가 아직 시작 전이거나 충돌몇 초 기다렸다가 재시도, 그래도 안 되면 컴퓨터 재시작
컨테이너 실행 시 멈추거나 매우 느림컴퓨터의 남은 메모리 부족다른 프로그램 종료, Docker Desktop 설정에서 메모리 할당량 확인
docker run 시 이미지를 내려받다가 멈춤네트워크 연결 불안정인터넷 연결 확인 후 같은 명령 재실행(중단된 부분부터 이어받는다)
Conflict. The container name ... is already in use같은 이름의 컨테이너가 이미 있음docker start+docker exec로 기존 컨테이너에 다시 들어가거나, docker rm -f로 지우고 새로 만든다

9. 실습 환경 점검

환경이 제대로 섰는지 최소한으로 확인해 봅니다. Rocky Linux 컨테이너 안([root@... /]# 프롬프트)에서 다음을 순서대로 입력합니다.

cd /root touch hello.txt ls -l hello.txt chmod 754 hello.txt ls -l hello.txt
  • touch hello.txt로 빈 파일을 하나 만듭니다.
  • 첫 번째 ls -l은 새로 만든 파일의 권한 문자열이 어떤 모양인지 보여 줍니다.
  • chmod 754 hello.txt로 권한을 바꿉니다.
  • 두 번째 ls -l에서 권한 문자열이 바뀐 것을 확인합니다.

첫 번째 ls -l과 두 번째 ls -l의 맨 앞 권한 부분(-rw-r--r-- 같은 열 개짜리 문자열)이 서로 다르게 나오면 성공입니다. 11편(권한 표기법)에서 배울 rwx와 8진수의 대응 관계를 여기서 미리 눈으로 본 셈입니다. 이 출력이 왜 그런 모양이 되는지는 11편에서 자세히 다룹니다.

핵심 정리

  • Docker는 컴퓨터 안에 리눅스를 가볍게 띄우는 도구이고, 가상 머신과 달리 하드웨어를 흉내 내지 않아 수 초 만에 뜬다
  • 주력 이미지는 rockylinux/rockylinux:9다. 짧은 이름 rockylinux:9(도커 공식 이미지)는 2024년 5월 이후 갱신이 끊겼다
  • 컨테이너를 나가는 것은 exit, 다시 들어가는 것은 docker start + docker exec이며, docker run을 또 치면 이름 충돌 오류가 난다
  • 데비안 계열(apt·dpkg) 실습에는 ubuntu:24.04 컨테이너가 따로 필요하다 — 기출의 약 34퍼센트가 데비안 계열이다
  • systemctl을 쓰려면 rockylinux/rockylinux:9-ubi-init 이미지를 --privileged로 띄워야 한다
  • 04·10·18·22편(파티션·마운트·장치 파일·X 윈도)은 가상 머신이 필요하지만, 이 중 개념 중심 편은 실습 없이 읽어도 시험 대비에 지장이 없다

마무리 복습

문제 14지선다
Docker 컨테이너와 가상 머신(VirtualBox)의 차이를 가장 정확하게 설명한 것은?
문제 24지선다
Rocky Linux 컨테이너를 띄울 때 rockylinux:9 대신 rockylinux/rockylinux:9를 쓰는 이유로 옳은 것은?
문제 34지선다
이미 rocky라는 이름의 컨테이너가 있는 상태에서 docker run -it --name rocky rockylinux/rockylinux:9 bash를 다시 실행하면 어떻게 되는가?
문제 44지선다
이 시리즈에서 Ubuntu 컨테이너를 별도로 준비하는 근거로 제시된 내용은?
문제 54지선다
일반 Rocky Linux 컨테이너에서 systemctl 명령이 동작하지 않는 이유와 해결책으로 옳은 것은?
문제 64지선다
04·10·18·22편이 컨테이너로 실습할 수 없는 이유를 짝지은 것으로 옳지 않은 것은?

참고 자료

Last updated on