Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bash Shell Script 실습 환경


1. 프로젝트 개요

이 프로젝트는 Bash ShellScript 실전편 실습용으로 가상 기업 Virtual Web Service Company의 인프라 실습 환경을 Docker 기반으로 구현한 것입니다. 기존 Vagrant 환경의 복잡함을 제거하고, 누구나 쉽게 실습할 수 있도록 구성했습니다.


2. 컨테이너 구성

컨테이너 역할 서비스 DMZ IP Local IP
cent1 웹 서버 Nginx 172.18.1.91 10.18.1.91
cent2 데이터베이스 MariaDB 11.7 172.18.1.92 10.18.1.92
cent3 NFS 스토리지 NFS 서버 172.18.1.93 10.18.1.93

각 컨테이너는 실습 편의를 위해 DMZ 영역 IP와 내부망 IP를 모두 갖고 있습니다.

  • DMZ IP(172.18.x.x): 웹 브라우저 접속 등 외부 서비스용
  • Local IP(10.18.x.x): 컨테이너 간 SSH, DB 접속, NFS 마운트 등에 사용

3. 사전 준비 사항

※ 각 소프트웨어의 설치 방법은 해당 링크의 공식 문서를 참고해 주세요.
(Windows, macOS, Linux 환경 모두 지원됩니다.)


4. 사용 방법

4-1. 저장소 클론

git clone https://github.com/bashbomb/vws-docker-environment.git

4-2. 컨테이너 이미지 빌드

M칩셋을 사용하는 Mac 사용자는 아래 환경 변수 설정을 한 후에 컨테이너를 빌드하세요

export DOCKER_DEFAULT_PLATFORM=linux/amd64

컨테이너 이미지 빌드

# 저장소를 복사한 디렉터리로 이동 
cd vws-docker-environment

# 컨테이너 빌드
docker-compose build

4-3. 컨테이너 실행

docker-compose up -d

컨테이너 별로 실행을 하려면 -d 뒤에 서버이름을 붙여주세요.

# cent1 컨테이너만 실행할 경우
docker-compose up -d cent1

4-4. 컨테이너 실행 확인

컨테이너가 정상적으로 기동되었는지 확인하려면 다음 명령어를 사용하세요:

docker ps -a

정상적으로 실행되면 아래와 같이 cent1, cent2, cent3 컨테이너가 모두 Up 상태로 표시됩니다.

CONTAINER ID   IMAGE                 COMMAND       ...   STATUS          NAMES
abc123456789   vws-cent1:latest     "/init.sh"    ...   Up xx minutes   cent1
def987654321   vws-cent2:latest     "/init.sh"    ...   Up xx minutes   cent2
ghi456789abc   vws-cent3:latest     "/init.sh"    ...   Up xx minutes   cent3

❗ 만약 STATUS가 Up이 아니라 Exited로 보이면 해당 컨테이너의 이름을 사용해 로그를 확인해보세요:

# cent1의 STATUS가 Exited일 경우
docker logs cent1

4-5. 로컬 환경에서 컨테이너에 접속

# 웹 서버에 접속
docker exec -it cent1 bash
# DB 서버에 접속
docker exec -it cent2 bash
# 스토리지 서버에 접속
docker exec -it cent3 bash

4-6. 컨테이너 내부에서 다른 서버에 접속

각 컨테이너에는 /root/.ssh/config와 키 파일이 미리 설정되어 있어 컨테이너 내부에서 이름(cent1, cent2, cent3)만으로 SSH 접속이 가능합니다.

예시:

# cent2 또는 cent3에서 cent1에 접속
ssh cent1 
# cent1, 3에서 cent2에 접속
ssh cent2 
# cent1, 2에서 cent3에 접속
ssh cent3 

5. 웹 페이지 접속

  • 브라우저에서 접속: http://localhost
  • cent1 컨테이너의 /usr/share/nginx/html 디렉터리에 있는 웹소스가 서비스됩니다.
  • 기본적으로 index.html 파일이 포함되어 있으며, 실습 시 자유롭게 수정 가능합니다.

6. 실습 가능한 주요 항목

  • 컨테이너 간 SSH 통신 (ssh cent2, ssh cent3)
  • MariaDB 접속 및 데이터베이스 테스트 (mysql -uroot)
  • NFS 서버에서 export, 다른 서버에서 mount (mount /mnt)
  • 웹서버 기본 페이지 확인
  • 시스템 부하 테스트 (stress), 기본 커맨드 (ps, netstat, tree 등)

7. 참고 및 주의사항

Mac(M1/M2/M3)에서 ps, netstat 실행 시 "rosetta"로 표시됨

  • Apple Silicon은 ARM 기반으로, x86 컨테이너는 Rosetta 2로 에뮬레이션됩니다.
  • 이 때문에 프로세스명이 실제 서비스가 아닌 /run/rosetta/rosetta로 표시될 수 있습니다.
  • nginx, sshd, mariadb 등은 실제로 정상 실행되고 있으니 무시하셔도 됩니다.

8. FAQ

Q. 컨테이너를 모두 종료하고 싶어요.

docker-compose down

Q. 컨테이너를 모두 초기화하고 싶어요.

docker-compose down -v --remove-orphans

Q. 다시 빌드하고 싶어요.

docker-compose build --no-cache

📄 라이선스

본 프로젝트는 CC BY-NC 4.0 라이선스에 따라 제공되며, 비영리 용도로 자유롭게 사용 가능합니다. 자세한 내용은 LICENSE 파일을 확인해주세요.

About

Bash ShellScript 실전편 실습 환경

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages