안녕하세요! 반복 질문 전혀 신경 안 쓰셔도 됩니다 :) 원래 환경 설정이 가장 어려운 부분이거든요. 로그까지 잘 찾아보셨습니다. 두 증상(① 로그에 "no such file or directory" → Exited, ② 시도할 때마다 이상한 이름 컨테이너 생성)이 사실 같은 원인일 가능성이 높습니다. 결론부터 말씀드리면 docker run이 아니라, 리포 폴더 안에서 docker-compose로 실행해야 합니다. 이 실습 환경은 컨테이너가 뜰 때 SRC/ 폴더(SSH 키·nginx 설정 등)를 컨테이너 안 /labdata로 가져와서 초기화합니다. 그래서 반드시 vws-docker-environment 폴더 안에서 실행해야 이 파일들이 연결돼요. 폴더 밖에서 실행하거나 docker run으로 직접 띄우면 그 파일들을 못 찾아서 "no such file or directory"가 뜨고 컨테이너가 바로 꺼집니다. (이상한 이름 컨테이너도 docker run을 직접 쓰셨을 때 생기는 현상이라, 정상은 아니에요.) 아래 순서대로 한 번만 깔끔하게 다시 해보시겠어요? # 0) (혹시 쌓인 이상한 컨테이너 싹 정리) docker rm -f $(docker ps -aq) # 1) 반드시 리포 폴더 안으로 이동 cd vws-docker-environment ls # docker-compose.yml 과 SRC 폴더가 보여야 정상! # 2) (M1/M2/M3 Mac이면 이 줄 먼저) export DOCKER_DEFAULT_PLATFORM=linux/amd64 # 3) 재빌드 + 실행 (docker run 말고 compose 사용!) docker-compose down -v --remove-orphans docker-compose build --no-cache docker-compose up -d # 4) 확인 — 이름이 cent1/cent2/cent3 로 떠야 정상입니다 docker ps -a 만약 2)에서 ls 했을 때 SRC 폴더가 안 보이면 클론이 덜 된 것이니, 폴더를 지우고 git clone https://github.com/bashbomb/vws-docker-environment.git 으로 다시 받아주세요. 그래도 Exited면 docker logs cent1, docker logs cent2, docker logs cent3 세 개 결과를 그대로 캡처해서 올려주시면 어디서 멈췄는지 정확히 짚어드릴게요. 화이팅입니다!
안녕하세요! git clone은 컨테이너 안이 아니라 본인 PC(호스트)의 터미널에서 실행하시면 됩니다. 즉 Docker를 띄우기 전에, 먼저 실습 환경 파일을 내 PC로 내려받는 단계예요. Windows를 쓰신다면 말씀하신 대로 Git Bash를 실행해서 그 창에 붙여넣으시면 됩니다. (PowerShell이나 명령 프롬프트(cmd)에서도 git이 설치돼 있으면 동작하지만, Git Bash가 리눅스 명령어와 가장 비슷해서 강의 따라가기에 편합니다.) Mac을 쓰신다면 기본 "터미널" 앱을 열어서 거기에 입력하시면 됩니다. 전체 흐름은 이렇습니다. # 1) 받고 싶은 위치로 이동 (예: 바탕화면) cd ~/Desktop # 2) 저장소 클론 (이 폴더 안에 vws-docker-environment 폴더가 생깁니다) git clone https://github.com/bashbomb/vws-docker-environment.git # 3) 받은 폴더로 들어가서 cd vws-docker-environment # 4) 이후 강의대로 도커 빌드 & 실행 docker compose build docker compose up -d 정리하면 Git Bash 창에 그대로 붙여넣으시면 맞습니다. git clone은 내 PC에 파일을 내려받는 명령이고, 그 다음 docker compose 명령부터가 컨테이너를 띄우는 단계라고 생각하시면 돼요. 참고로 예전 VirtualBox 방식 실습을 해보셨다면 이번엔 Docker 기반이라 처음엔 생소하실 수 있는데, "내 PC에서 clone → 도커로 서버 3대를 띄움 → 그 안에 접속해서 실습" 흐름만 기억하시면 됩니다. 막히시면 어떤 OS(윈도우/맥) 쓰시는지, 그리고 에러 메시지나 스크린샷을 주시면 조금 더 자세히 설명을 드릴 수 있을 것 같습니다.
안녕하세요! 파일이 깨진 게 아니라 브라우저 보안 정책 때문입니다 🙂 main.html은 아래쪽 내용을 iframe으로 불러오는 구조인데, 파일을 더블클릭해서 file://로 열면 최신 브라우저(크롬/엣지 등)가 보안상 iframe 안의 로컬 HTML 로딩을 차단합니다. 그래서 윗부분 메뉴 텍스트만 보이고 아래가 비어 보이는 거예요. 해결 방법 두 가지 중 편한 걸 쓰시면 됩니다. 방법 1. 메뉴에서 직접 열기 (가장 간단) main.html 대신 보고 싶은 파일(0-1.intro.html, 1-1.scenario1.html 등)을 직접 더블클릭해서 여세요. iframe 없이 그 페이지만 단독으로 열리니 내용이 정상적으로 보입니다. 방법 2. 간단한 로컬 서버로 열기 (메뉴 그대로 쓰고 싶을 때) 강의자료 폴더에서 터미널을 열고 아래 명령 하나만 실행하세요. # 강의자료(html 파일들이 있는) 폴더로 이동한 뒤 python3 -m http.server 8000 그다음 브라우저에서 http://localhost:8000/main.html 로 접속하면 메뉴와 iframe이 모두 정상 동작합니다. (VS Code를 쓰신다면 "Live Server" 확장으로 main.html을 열어도 동일하게 됩니다.) 참고로 모든 HTML과 style.css, network.png 파일이 같은 폴더 안에 함께 있어야 합니다. 압축을 풀 때 일부만 따로 옮겨졌다면 같이 모아주세요. 해결 안 되시면 화면 스크린샷이랑 어떤 브라우저 쓰시는지 알려주시면 설정 등도 확인해드릴 수 있을 것 같습니다.
안녕하세요. 질문 남겨주셔서 고맙습니다! JS 리액트를 하시다가 인프라/리눅스로 방향을 바꾸시면 용어가 많이 다르게 느껴지실거예요. 분야가 많이 다르니까요. : ) 질문 주신 내용별로 나눠서 답변을 드리겠습니다. 1) 이 강의는 어떤 분들을 기준으로 만들었나요? 이 강의는 “리눅스 기본 명령어는 한 번쯤 써봤고, 이제 실제 서버/실무에서는 어떻게 굴러가는지 알고 싶은 분” 을 기준으로 설계했습니다. 즉, cd, ls, cat, tail, grep 등등 리눅스 기본 명령어는 한 번쯤 써봤고 리눅스가 “서버 운영체제”라는 건 알고 있고 네트워크는 완전 전문가까진 아니어도, “TCP/UDP가 네트워크에서 쓰이는 프로토콜 이름이다” 정도는 대략 들어본 사람 을 상정하고 만든 강의예요. 그래서 말씀하신 것처럼 “완전 처음 접하는 분들용 입문 강의”는 아니고, 기초에서 → 실무감각으로 넘어가는 ‘실무 입문’ 쪽에 가깝습니다. 2) TCP/UDP 같은 건 꼭 알고 와야 하나요? 강의 안에서 TCP/UDP 자체를 깊게 파고드는 건 아니고, 웹 서비스가 어떻게 통신하는지 포트/방화벽/연결 같은 이야기가 나올 때 배경 개념으로 살짝살짝 등장하는 정도라서 “전혀 모른다 = 강의를 못 듣는다” 수준은 아닙니다. 다만, 듣다 보면 “아 이 부분은 한 번 정리해두면 좋겠다” 싶은 개념들이 나올 텐데, 그때그때 ChatGPT나 검색, 유튜브 짧은 설명 영상 같은 걸로 옆에 메모장 켜두고 같이 정리해가면 훨씬 편해지실 거예요. 3) 지금 제 상태라면, 기초부터 듣고 와야 할까요? 솔직하게 말씀드리면: 리눅스 명령어를 거의 안 써보셨다면 → 기초편 (리눅스 기본 + 간단한 쉘스크립트)부터 듣고 오시는 걸 추천드립니다. 리눅스 기본은 조금 해봤는데, 용어(TCP/UDP 등)가 헷갈린다 → 지금 강의를 들으면서 모르는 단어는 따로 적어두고 강의 끝나고/중간중간에 AI나 검색으로 하나씩 정리해 가는 방식 을 추천드려요. 정리하면, “리눅스/네트워크 완전 0에서 시작하는 강의”는 아니고, “기본은 조금 알고 있는 상태에서, 실무에서 어떻게 트러블슈팅하는지 감을 잡는 강의”에 가깝습니다. 지금 단계에서 한두 강 정도 더 들어보시고, “아직은 너무 버겁다” 싶으시면 → 리눅스 기초 부터 차근차근 “내용은 이해는 되는데 용어만 낯설다” 수준이면 → 이 강의 계속 들으시면서 어휘/개념을 곁다리로 채우는 걸 추천드려요. 조금 낯설고 헷갈리는 구간만 잘 넘기시면, 개발 + 인프라 두 영역을 모두 이해하는 훨씬 강한 엔지니어가 되실 수 있을 거예요. 궁금한 점은 언제든 편하게 질문 주세요! 응원합니다!!
안녕하세요, 김소금님 저야말로 좋은 질문 남겨주셔서 정말 고맙습니다. 기본적으로 인프런 AI 인턴이 아주 잘 정리해주었으니 참고해주시고요, 저는 조금 다른 관점에서 말씀드려볼게요. 보통 인프라 환경에서는 서버를 역할별로 그룹화해서 운영합니다. 예를 들어 프론트엔드 서버 그룹, 백엔드 서버 그룹, 데이터베이스 서버 그룹처럼요. 이렇게 그룹 단위로 구성된 여러 대의 서버 상태를 모니터링한다고 생각해보면, 질문 주신 두 방식 중 어떤 구조가 더 효율적이고 유지 관리에 유리할지 더 명확히 와닿을 수 있어요. 예를 하나 들어볼게요. 50대의 서버를 운영 중인데, 갑작스럽게 이벤트나 트래픽 증가로 30대를 더 증설해야 하는 상황이 생겼다고 가정해보면, 이때 각 서버에 개별적으로 봇 토큰을 설정하는 방식과, 중앙 모니터링 서버에서 하나의 봇으로 일괄 관리하는 방식 중 어느 쪽이 더 빠르게 대응 가능하고, 나중에 유지보수도 수월할까요? 이처럼 변화나 확장에 유연하게 대응해야 하는 운영 환경에서는 일반적으로 중앙 집중형 알림 구조가 더 효율적이고 안정적이라는 결론이 나올 수 있어요. 물론, 서버 개별 알림이 중요한 특수한 상황이라면 독립된 봇 구성도 고려할 수 있고요. 상황에 따라 하이브리드 형태로 구성하는 경우도 있으니, 실제 운영 목적과 환경에 맞춰 유연하게 판단하시면 좋겠습니다. 연휴에도 공부하고 이렇게 질문까지 남겨주시는 모습이 정말 멋집니다! 이런 꾸준함이 진짜 실력을 만들어준다고 믿어요. 항상 응원하겠습니다. 화이팅입니다!!
안녕하세요. 인프런 AI 인턴이 답변을 달아준 내용대로 /root/.ssh/id_rsa 키가 손상된 것 같습니다. git clone 또는 컨테이너를 생성 할 때 해당 파일을 카피하는데 그 과정에서 손상되었을 가능성이 높습니다. 실습 환경 깃허브에서 SRC/ssh/id_rsa키를 다시 다운받으시거나 내용을 복사해서 /root/.ssh/id_rsa 를 새로 만들어주세요. 삭제하고 파일을 새로 만든 다음에는 아래 명령어로 권한설정 꼭 해주시구요. chmod 600 ~/.ssh/id_rsa 혹시 안되는 부분이 있으시면 다시 질문 남겨주세요.
안녕하세요. 인프런 AI 인턴이 이미 답변을 달아주셨지만, 추가로 설명드립니다. docker-compose.yml 파일 내용을 보시면 컨테이너에 172.18.1.91~93 IP가 할당되어 있습니다. 다만, 제가 찾아보니 Windows 환경의 WSL NAT 구조상 이 IP 대역을 브리지 방식으로 직접 사용할 수는 없는 것 같습니다. 따라서 로컬 PC에서 웹페이지에 접속할 때는 WSL이 할당한 변경된 IP를 사용하시고, 컨테이너 내부에서는 172.18.1.91~93 주소를 그대로 사용하시면 됩니다. 해당 내용이 실습 진행에는 큰 영향을 주지 않으니 그대로 진행하셔도 괜찮습니다. 혹시 진행 중에 다른 문제가 발생하면 질문 남겨주세요. 고맙습니다.
안녕하세요. 강좌에서 사용한 atlassian confluence는 공개하고 있지 않는 대신 동일한 페이지를 pdf 교안으로 제공하고 있습니다. 링크는 목차의 실전편 교안과 새소식에서 확인하실 수 있는데요. 직접 질문을 주셨으니 제가 아래에 링크 보내드리겠습니다. 다운받아서 압축을 풀고 열어 보세요. https://drive.google.com/file/d/1A53Y7V55KjdZfz_exUvaL5aidFn_m1dV/view?usp=drive_link 혹시 잘 안된다거나 문제가 있으면 다시 질문 올려주세요. 확인하고 바로 답변 드리겠습니다.
안녕하세요. 인프라 AI 인턴의 답변처럼 파일 COPY가 제대로 되지 않은 것이 문제의 원인인 것 같습니다. 제 환경에서 재현이 안되기 때문에 어떤 환경에서 빌드를 실행 중인지 확인을 해주셨으면 합니다. (windows, linux, macos 등) 윈도우즈나 리눅스 환경이라면 우선 아래 방법으로 시도를 해 볼 수 있을 것 같습니다. 줄바꿈 문자열 등이 달라 인식이 안될 수가 있으니 CRLF를 LF로 변경하고 다시 빌드해보세요. 윈도우즈라면 WSL이나 Git Bash 등에서 실행 하세요. dos2unix SHELL/init.sh chmod +x SHELL/init.sh 빌드한 이미지를 삭제하고 빌드 캐시를 사용하지 않고 빌드 윈도우즈라면 WSL이나 Git Bash 등에서 실행 하세요. docker-compose down -v --remove-orphans docker-compose build --no-cache 이렇게 시도해보시고 안되면 다시 질문 부탁드립니다.
김무준님 안녕하세요. Name or servie not known 에러 메세지는 도메인 이름을 resolving 하지 못해서 나타나는 에러입니다. 대부분 /etc/resolv.conf 또는 네트워크 설정에서 nameserver를 잘못 지정했을 때 나오는데 KT DNS서버로 설정이 잘 된 것을 확인하셨으니 가상서버에서 외부 인터넷과의 네트워크 통신 문제일 가능성이 높을 것 같습니다. virtualbox 가상서버의 네트워크 설정이 브릿지로 되어있는지 확인해보셔야 할 것 같아요.. 현재 로컬머신의 인터넷과 연결된 네트워크 카드와 VirtualBox 가상서버의 네트워크 카드가 브릿지 설정으로 연결되어 있어야 가상서버 내부에서 인터넷으로 통신이 될거예요. 네트워크 설정을 브릿지로 변경 해 보시고 ping gmail.com 등으로 dns resolving이 되는지 확인 해보세요. 참고로 가상서버의 IP는 강의에서 사용한 IP와 달라도 통신에는 문제가 발생하지 않습니다.