상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
부동산 투자에서 임대 수익률은 어떻게 계산하나요?
간장으로 만든 파스타 레시피는?
마카오에서 아이들과 함께 갈 만한 장소는 어디인가요?
마카오에서 인기 있는 거리 음식은 무엇이 있나요?
스페인과 포르투갈의 상징 동물은 무엇인가요?
스페인과 포르투갈의 개인 정보 보호 법은 어떻게 다르나요?
스페인과 포르투갈에서의 아시아 이민자 커뮤니티는 어떤가요?
스페인과 포르투갈의 주류 문화는 어떻게 다르나요?
록펠러 센터에 대한 가이 투어는 어떻게 예약하나요?
수익화를 위한 지속적인 콘텐츠 개발 방법은?
인스타그램에서 퍼스널 브랜드를 어떻게 구축하나요?
인스타그램 계정의 언어 설정을 통한 글로벌 수익화 전략은?
Previous
Next
수정하기 - 웹서버구축을 위한 도커 사용 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
웹서버를 도커(Docker)로 구축할 때는 “컨테이너화(컨테이너 안에 웹서버 실행 환경을 격리)”한다는 개념을 중심으로 진행합니다. 아래 내용은 도커 초보자가 따라 할 수 있도록 순서대로 정리한 가이드입니다. 1. 사전 준비 • 호스트 머신에 도커 엔진 설치 – Ubuntu/Debian 계열: `sudo apt-get update && sudo apt-get install docker.io` – CentOS/RHEL 계열: `sudo yum install docker` – Windows/Mac: Docker Desktop 설치 • 도커 권한 설정(필요하면) – `sudo usermod -aG docker $USER` 후 재로그인 2. 베이스 이미지 선택 웹서버 종류에 따라 베이스 이미지를 고릅니다. 대표적으로 Nginx, Apache(httpd), Node.js, Python(Flask/Django) 등이 있습니다. 예를 들어 정적 파일 서빙용으로 Nginx를 쓴다면 `nginx:latest` 이미지를 선택합니다. 3. 프로젝트 디렉터리 구조 준비 ``` my-web-server/ ├── Dockerfile ├── html/ │ └── index.html └── nginx.conf (필요 시 사용자 설정 파일) ``` • html/ 폴더에는 실제 서비스할 정적 파일(HTML, CSS, JS 등)을 넣습니다. • nginx.conf는 기본 설정을 커스터마이징할 때 사용합니다. 4. Dockerfile 작성 Dockerfile은 컨테이너 이미지를 만드는 설계도입니다. Nginx 예시를 보겠습니다. ``` 베이스로 공식 nginx 사용 FROM nginx:latest 호스트의 nginx 설정 파일을 컨테이너에 복사 COPY nginx.conf /etc/nginx/nginx.conf 정적 파일(html 디렉터리)을 컨테이너 웹 루트로 복사 COPY html/ /usr/share/nginx/html/ 80 포트 오픈(메타데이터용, 실제 매핑은 실행 시) EXPOSE 80 ``` • COPY 명령으로 설정 파일과 정적 파일을 이미지에 포함시키고, • EXPOSE로 컨테이너 내부 포트를 문서화합니다. 5. 도커 이미지 빌드 터미널에서 프로젝트 루트로 이동 후 다음 명령 실행: ``` docker build -t my-nginx-web . ``` • `-t` 옵션에 지정한 이름(my-nginx-web)으로 이미지를 태깅(tag)합니다. • 빌드 과정에서 Dockerfile을 참고해 계층별(layer)로 이미지를 만듭니다. 6. 컨테이너 실행 이미지가 준비되면 컨테이너를 띄웁니다. 가장 기본적인 실행 예시는: ``` docker run -d \ --name my-web-server \ -p 80:80 \ my-nginx-web ``` • `-d` 백그라운드 실행 • `--name`으로 컨테이너 이름 지정 • `-p 호스트포트:컨테이너포트` 로 80→80 <a href='https://sangseek.com/sangseeks/포트포워딩/ko'>포트포워딩</a> • 필요하다면 `-v /host/logs:/var/log/nginx` 와 같이 볼륨 마운트로 로그나 데이터를 호스트에 보관 7. 환경 변수 및 설정 변경 동적으로 설정을 주입하려면 Dockerfile에 직접 쓰기보다 환경 변수 사용이나 기동 스크립트를 활용합니다. 예를 들어: ``` docker run -d \ -e SERVER_NAME=example.com \ -e UPSTREAM=backend:3000 \ my-nginx-web ``` 그리고 ENTRYPOINT 스크립트에서 환경 변수로 템플릿화된 nginx.conf를 생성해 반영합니다. 8. 네트워크 구성 여러 컨테이너(웹서버 + 애플리케이션 서버 + DB)를 함께 운영하려면 도커 네트워크를 만듭니다. ``` docker network create web-net docker run -d --network web-net --name backend-app backend-image docker run -d --network web-net --name my-web-server -p 80:80 my-nginx-web ``` 컨테이너 이름(backend-app)을 호스트명처럼 쓰면 Nginx에서 프록시 패스 대상 지정이 가능합니다. 9. Docker Compose 활용 컨테이너를 여러 개 띄우거나 볼륨·네트워크를 정의할 때는 Compose가 편리합니다. `docker-compose.yml` 예: ``` version: '3.8' services: web: build: . ports: - "80:80" volumes: - ./html:/usr/share/nginx/html - ./nginx.conf:/etc/nginx/nginx.conf networks: - webnet app: image: my-backend-app networks: - webnet networks: webnet: driver: bridge ``` 이 파일이 있는 디렉터리에서 `docker-compose up -d` 만으로 모든 서비스 구동이 가능합니다. 10. 보안 및 최적화 • 가급적 공식 이미지나 검증된 이미지를 베이스로 사용 • 불필요한 패키지 제거, 이미지 스캔(취약점 검사) • 컨테이너 내부에서 root 권한으로 실행하지 않도록 USER 지시자 사용 • 리버스 프록시(예: Traefik, Nginx Proxy Manager)나 로드밸런서를 앞단에 두고 TLS 인증서 자동 갱신 11. CI/CD 연동 • GitHub Actions, GitLab CI 등을 이용해 푸시 시 자동 빌드·푸시 • AWS ECR, <a href='https://sangseek.com/sangseeks/Docker Hub/ko'>Docker Hub</a>, GCR(Google Container Registry) 등에 이미지 저장 • 배포 스크립트(Ansible, Terraform)나 쿠버네티스 클러스터로 확장 배포 이 과정을 통해 손쉽게 웹서버 이미지를 만들고, 어떤 환경에서도 동일한 설정으로 컨테이너를 기동할 수 있습니다. 도커를 쓰면 빌드·배포·운영 단계 모두 일관성 있고 자동화하기 쉬워 장기적으로 운영 효율이 크게 향상됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기