정보
Docker를 사용해서 리눅스마스터 1급 실습환경을 만들어보자
커널패닉

Lv.1 커널패닉 (119.♡.59.225)

2025년 2월 12일 AM 12:09 · 수정됨(02. 02. 08:25)

조회 838 공감 0

리눅스마스터 1급 실습환경 구축 강좌입니다.

Docker를 사용하여 어느 환경에서나 실습 환경을 구축할 수 있도록 구성했습니다.

가상 환경(예: VMware, VirtualBox 등)을 사용하면 Docker 없이도 환경을 구축할 수 있지만 작업 내용을 되돌리는 스냅샷 기능이 없는 가상머신도 있어 본 가이드를 작성하게 되었습니다.


[code]FROM rockylinux:8


# 리비전: 4780b5e

# 패키지 버전 설정

# https://dlcdn.apache.org//httpd

# https://dlcdn.apache.org//apr

# https://sourceforge.net/projects/pcre/files/pcre

# https://cdn.kernel.org/pub/linux/kernel

# 404 Not Found 오류시 위 링크를 참조하여 버전 수정 후 재시도


ARG httpd_version=2.4.63

ARG apr_version=1.7.5

ARG apr_util_version=1.6.3

ARG pcre_version=8.45

ARG kernel_version=6.13


WORKDIR /root


RUN yum update -y && \\

yum install -y --allowerasing \\

man-db man-pages logrotate rsyslog sendmail procps-ng zip openssh \\

net-tools rsync kmod lvm2 openssl-devel bind dhcp-server dhcp-client \\

vim git wget curl sudo make gcc gcc-c++ autoconf automake flex cups \\

e2fsprogs util-linux coreutils cronie crontabs squid mdadm telnet telnet-server \\

nfs-utils samba samba-client network-scripts bison nmap traceroute epel-release \\

iproute iputils tar gzip bzip2 xz dump cpio file passwd ncurses ncurses-devel \\

vsftpd pciutils quota sed iptables firewalld bind-utils expat expat-devel \\

ypbind ypserv yp-tools rpcbind xinetd elfutils-libelf-devel openssh-server postfix


RUN curl -fSL https://dlcdn.apache.org//httpd/httpd-$httpd_version.tar.gz > httpd-$httpd_version.tar.gz && \\

tar -xf httpd-$httpd_version.tar.gz && \\

curl -fSL https://dlcdn.apache.org//apr/apr-$apr_version.tar.gz > apr-$apr_version.tar.gz && \\

tar -xf apr-$apr_version.tar.gz && \\

curl -fSL https://dlcdn.apache.org//apr/apr-util-$apr_util_version.tar.gz > apr-util-$apr_util_version.tar.gz && \\

tar -xf apr-util-$apr_util_version.tar.gz && \\

curl -fSL https://sourceforge.net/projects/pcre/files/pcre/$pcre_version/pcre-$pcre_version.tar.gz > pcre-$pcre_version.tar.gz && \\

tar -xf pcre-$pcre_version.tar.gz && \\

curl -fSL https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-$kernel_version.tar.xz > linux-$kernel_version.tar.xz && \\

tar -Jxf linux-$kernel_version.tar.xz && \\

mv apr-$apr_version apr-util-$apr_util_version httpd-$httpd_version pcre-$pcre_version /usr/local/src && \\

rm -rf *.tar.*


WORKDIR /usr/local/src

RUN apr-$apr_version/configure \\

--prefix=/usr/local/src/apr-$apr_version && \\

make && make install && \\

apr-util-$apr_util_version/configure \\

--prefix=/usr/local/src/apr-util-$apr_util_version \\

--with-apr=/usr/local/src/apr-$apr_version && \\

make && make install && \\

pcre-$pcre_version/configure \\

--prefix=/usr/local/src/pcre-$pcre_version \\

--with-apr=/usr/local/src/apr-$apr_version \\

--with-apr-util=/usr/local/src/apr-util-$apr_util_version && \\

make && make install


WORKDIR /usr/local/src/httpd-$httpd_version

RUN ./configure \\

--prefix=/usr/local/apache \\

--enable-modules=most \\

--enable-mods-shared=all \\

--enable-so \\

--with-apr=/usr/local/src/apr-$apr_version \\

--with-apr-util=/usr/local/src/apr-util-$apr_util_version \\

--with-pcre=/usr/local/src/pcre-$pcre_version/bin/pcre-config && \\

make && make install && \\

/usr/local/apache/bin/httpd -V


WORKDIR /root

RUN yum install -y --allowerasing tldr && \\

yum upgrade -y yum autoremove -y && yum clean all && \\

ln -s /usr/local/apache/man/man1/* /usr/share/man/man1 &&\\

ln -s /usr/local/apache/man/man8/* /usr/share/man/man8 &&\\

mandb

[/code]


  1. 위 코드를 편집기에 붙여넣고, 파일 이름을 확장자 없이 "Dockerfile" 로 저장합니다.
  2. 저장한 Dockerfile을 기반으로 이미지를 빌드하기 위해 docker build -t linuxmaster -f Dockerfile . 명령을 사용합니다. (여기서는 이미지 별칭을 "linuxmaster" 로 지정하며, 다른 별칭도 사용할 수 있습니다)
  3. 다음 명령을 실행하여 실습을 진행합니다. docker run --rm -it linuxmaster
  4. 빌드된 이미지를 제거하려면 다음 명령을 실행합니다. docker rmi linuxmaster

만약 아래와 같은 오류를 해결하려면, 4번 명령을 docker run --rm -it --privileged=true linuxmaster /sbin/init와 같이 변경합니다. (단 실습 중 호스트에 예기치 않은 문제가 야기될 수 있습니다)

[code=bash]System has not been booted with systemd as init system (PID 1). Can't operate.

Failed to connect to bus: Host is down[/code]

또한 docker run -it --name <컨테이너명> linuxmaster와 같이 입력할 경우 제공된 이름을 가진 컨테이너가 생성되지만 작업 내용이 보존되어, 실제 시험장 환경과 차이가 있을 수 있습니다. 컨테이너를 삭제하려면 docker rm <컨테이너명>를 입력합니다.


첨부파일

Dockerfile 3.2 KB

댓글 (1)

  • 피콜롤로 Lv.1

    02.02 · 220.♡.204.226

    오래 전 리눅스 배워 보려고 알짜리눅스와 레드햇 리눅스 설치해서 조금 써 본 기억이 있습니다.
    이후 더 이상 못 배웠습니다.
    다름 아닌 영타를 못쳐서입니다.
    영타를 독수리타로 하니 너무 느려 진전이 없어 포기했습니다.
    지금은 데탑에 하모니카 씁니다.
    하모니카 다 좋은데 가끔 부트로더인가요.
    뭐가 깨져 부팅이 안되고 뭐를 입력하라고 합니다.
    무슨 말인지 모르니 다시 설치합니다.
    이렇게 진전없이 일반 사용자에 머무르고 있습니다.

댓글을 작성하려면 이 필요합니다.