리눅스 테스트 환경이 필요할 때, 보통 VirtualBox 혹은 VMware로 VM을 구성하곤 합니다.
VM 방식의 경우 호스트 PC의 리소스(CPU, Ram, Disk 등..)를 상당히 잡아먹는 방식이라 노트북 환경에서 여러개의 VM을 구성하기에는 부담이 있습니다.
요즘 개발할 때, 노트북에 미들 웨어(DB 등..)를 도커 컨테이너로 많이 사용하는데,
리눅스 환경을 컨테이너로 구성 시, VM에 비해 적은 리소스와 보다 편리하게 테스트 환경을 구성할 수 있습니다.
VM과 도커 컨테이너, VM으로 안해도 문제 없나?
1. 도커 파일 작성
Dockerfile
# Rocky Linux 9.6 이미지를 기반으로 사용
FROM rockylinux:9
# 타임존 설정 (한국 시간대로 설정)
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 개발 도구 및 SSH 서버 설치
RUN dnf update -y && \
dnf install -y openssh-server openssh-clients git vim wget procps tar sudo && \
dnf clean all
# --- SSH 설정 ---
# SSH 실행 시 필요한 호스트 키 생성
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
# SSH 실행을 위한 디렉토리 확인 및 설정
RUN mkdir -p /var/run/sshd
RUN sed -i 's/^PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
# --- Bash 쉘 및 사용자 설정 ---
# 1. root 사용자 비밀번호 설정 (비밀번호: password)
RUN echo 'root:password' | chpasswd
# 2. 새로운 일반 사용자 'myuser' 추가 및 설정
# - /bin/bash를 기본 쉘로 지정
# - 비밀번호 'password' 설정
# - wheel 그룹에 추가하여 sudo 권한 부여
RUN useradd -m -s /bin/bash myuser
RUN echo 'myuser:password' | chpasswd
RUN usermod -aG wheel myuser
# SSH 포트(22) 노출
EXPOSE 22
# 컨테이너 시작 시 SSH 서버 실행
CMD ["/usr/sbin/sshd", "-D"]
Java
복사
2. 도커 파일 빌드
docker build -t rocky9 .
Bash
복사
3. 컨테이너 생성
docker run -d -p 2222:22 --name rocky_dev_container rocky9
Bash
복사
4. 컨테이너 접속
•
SSH 방식 (권장)
ssh myuser@localhost -p 2222
Java
복사
•
docker exec 방식 (굳이..?)
docker exec -it rocky_dev_container /bin/bash
Bash
복사
•
방금 만든 컨테이너의 OS는 Rockylinux 이니까, dnf 패키지 매니저로 필요한 패키지 설치하셔서 사용하시면됩니다.
•
sftp 프로토콜을 지원하는 클라이언트 프로그램을 통하여 파일 업&다운로드를 하시면 됩니다.
•
여러개의 컨테이너를 동시에 올릴 경우, 3. 컨테이너 생성 과정에서 컨테이너 이름(rocky_dev_container)과, 외부 포트 (2222)를 중복되지 않게 설정하여 컨테이너를 생성 하시면 됩니다.
