Docker를 이용하여 웹 서버 구축 - 응용편(1)

[Docker]Docker를 이용하여 웹 서버 구축 - 응용편(1)

이번 포스팅은 실제로 AWS상에서 Docker로 웹 서버를 구축 할 때를 가정하여 구축한다.
만약, 이번 포스팅에서 사용하는 커맨드에 대한 이해가 부족하다면 지난 포스팅을 보실 것을 추천한다.

개요
  • 컨테이너 데이터 볼륨의 특징
  • 도커 설치
  • 베이스 이미지 다운로드
  • 컨테이너 생성 및 Nginx설정
  • 도커 이미지 생성
  • 도커 이미지로 컨테이너 생성
    • 포트 포워딩
    • 볼륨(디스크) 연결
  • 확인

컨테이너 데이터 볼륨의 특징
  • 컨테이너는 격리 된 공간이라 따로 마운트 설정을 해주지 않으면 호스트OS와 디스크를 공유 할 수 없다.
  • 호스트OS의 볼륨 디렉토리를 컨테이너 내부에 마운트 할 수 있다.
  • 컨테이너의 볼륨(디스크)은 컨테이너가 생성 될 때 초기화 되어진다.
  • 컨테이너에 접속하여서 파일 컨트롤이 가능하다.

  • 도커 설치(EC2)
yum으로 설치
$ yum install -y docker-io
docker service 시작
$ sudo service docker start
docker 시작 프로그램 등록
$ sudo chkconfig docker on
  • 베이스 이미지 다운로드
베이스 이미지 검색
$ sudo docker search centos
베이스 이미지 다운로드
$ sudo docker pull centos
이미지 확인
$ sudo docker images
  • 컨테이너 생성 및 Nginx설정
컨테이너 생성
$ sudo docker run -d —privileged —name=centos-nginx centos /sbin/init
컨테이너 접속
$ sudo docker exec -i -t centos-nginx /bin/bash
centos7을 사용할 경우 systemctl를 사용할 때 에러가 발생한다. 자세한 내용은 하기 링크를 참조
Docker에서 Centos7의 systemd에러
Centos 버전 확인
~/# cat /etc/release
CentOS Linux release 7.2.1511 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

CentOS Linux release 7.2.1511 (Core)
CentOS Linux release 7.2.1511 (Core)
컨테이너의 yum update
~/# yum update
nginx 설치
~/# yum install -y nginx
nginx 설정
~/# vi /etc/nginx/nginx.conf
nginx 서비스 실행
~/# systemctl start nginx.service
웹페이지 소스를 넣을 디렉토리 및 nginx로그 디렉토리 확인 및 생성
nginx 로그의 기본 디렉토리 /var/log/nginx/
이번에는 웹페이지 소스를 /srv 로 지정할 예정이니 확인해보고 없으면 mkdir /srv 로 디렉토리 생성
(따로 삭제를 하지 않았다면 기본으로 있을 것이다.)
로그 : /var/log/nginx/
소스 : /srv
컨테이너에서 나오기
~/# [Ctrl + P] + [Ctrl + Q]
  • 도커 이미지 생성
커밋하여 도커 이미지 생성
$ sudo docker commit webserver-test centos:centos-nginx
  • 도커 이미지로 컨테이너 생성
컨테이너 생성 및 실행
$ sudo docker run —privileged -d —name webserver1 -v /srv:/srv -v /srv/project/log:/var/log/nginx/log -p 8100:80 centos:centos-nginx /sbin/init
-v 옵션은 복수 지정이 가능하다.
컨테이너 접속
$ sudo docker exec -it webserver1 /bin/bash
nginx 실행
~/# systemctl start nginx.service
컨테이너에서 나오기
~/# [Ctrl + P] + [Ctrl + Q]
  • 포트 리스닝 확인 및 접속 확인
포트 리스닝 확인
$ netstat -ano | grep 8100
AWS SG(Security Group)에 8100포트 등록(생략)
접속 확인
<그림1>

AWS와 관련된 내용은 docker관련 포스팅이 끝난 후 포스팅 예정

댓글