Docker에 Ubuntu에 nginx올려 웹서버 동작시키기

<!-- TOC -->

<!-- /TOC -->

들어가기

이번에는 Windows for Docker를 이용해서 Ubuntu 도커 이미지에 nginx를 설치하여 Ubuntu 도커 컨테이너에서 웹서버를 동작시키고, 호스트OS에서 브라우저로 접근해보려 한다. 사실 centos이미지를 사용하려 했으나, docker hub에 공유된 공식 centos 이미지는 뭔가 결핍된? 최소화된 상태의 이미지라 뭔가 docker file을 통해 전처리를 해야 하는 작업이 필요했다. 그래서 귀찮아서 centos를 ubuntu로 대체했다.

테스트 해본결과 centos 공식 이미지에 systemctl 명령어가 동작을 하지 않았었다.

docker를 사용하니 단순히 nignx 이미지를 가지고 웹서버를 돌릴수도 있을 것이다. 하지만 어떤 특정 서비스를 동작시키기 위해서 여러가지 다른 프로그램이나 기타 설정들이 필요 할 수도 있다.

ubuntu이미지 기반에 nginx를 설치하는 형태로 서비스를 만들경우, ubuntu의 패키지 메니저를 사용할수 있기 때문에 기타적인 프로그램 설치, 연동, 설정등이 쉬워진다.

실습

1
docker images

위 명령어로 현재 호스트에 설치된 docker 이미지를 검색해보자.

docker images

음 우분투가 없다. 다음 명령어로 docker hub에 ubuntu를 검색하자.

1
docker search ubuntu

docker search ubuntu 결과

끙... 지금 docker hub쪽 서버가 좀 이상한지 docker search 명령어 응답이 재대로 안나온다.

대신 windows for docker의 kitematic에서 ubuntu 이미지를 검색하면 공식 우분투 이미지를 확인 할 수 있다.

끙 근데 역시 도커 허브 서버가 이상한지 이미지를 다운로드 할수가 없다.

음 docker hub가 간혹 맛탱이가 가는듯 하다.

이럴 때는 ... 나중에 다시 하자.

A FEW MOMENTS LATER...

잉?

한 참뒤에도 안되서, 다시 kitematic에 들어가니 갑작이 docker hub 계정을 물어본다.

음 뭔가 전에 입력된 것이 초기화 된듯 하다.

아 시발 또 안된다.

A FEW MOMENTS LATER...

으 마침내 된다.

검색된 이미지중 ubuntu 공식 이미지를 다운받자.

1
docker pull ubuntu

위 명령어를 입력하면 자동으로 해당 이미지의 최신 tag 이미지를 받는다.

다운로드 한뒤 docker images로 조회해 보면 이미지가 다운로드 된 것을 확인 할수있다.

다음 명렁어로 ubuntu이미지를 컨테이너로 동작시키자.

1
docker run --name ubunto-nginx -p 80:80 -p 443:443 -i -t ubuntu /bin/bash

먼가 dockerfile을 사용하면 다양한 설정이 간편하게 다양한 설정을 가능할것 같은데, 아직 내가 공부가 부족해서 일단 이렇게 docker 명령어로 진행하겠다. 위 명렁어를 입력하면 바로 컨테이너가 실행되며 그 컨테이너의 쉘에 진입하게 된다.

아래 명렁어를 순서대로 입력해자. 별 내용은 없어 모든 과정 화면 캡쳐는 생략한다.

1
2
3
4
5
apt-get update   #패키지 메니지 업데이트
apt-get install curl #쉘에서 url 접근을 위해 설치, 웹서버 동작 테스트용
apt-get install nginx #nginx 설치
service nginx start #nginx 웹서버 동작
curl -X GET http://127.0.0.1:80 #우분투 도커 컨테이너 내부에서 nginx 서버 동작 확인.

우분투 컨테이너 내에서 nginx 웹서버의 동작을 확인했다.

그럼 우분투 컨테이너 내부가 아닌 호스트 OS인 windows에서 접속이 되는지 확인해 보자.

호스트 OS인 윈도우에서 브라우저로 우분투 컨테이너의 웹서버 접근 결과

오 잘 된다. 끝!

마무리

음 인프라 관련 일을 해본적도 없고, 공부도 별로 못했고 그냥저냥 재미로 docker를 보고 있지만 뭔가 docker를 쉽게 사용하기 위해서는 서비스 단독 이미지를 사용하는 것보다 ubuntu와 같은 패키지 메니저가 설치된 이미지 기반에 서비스를 설치해서 사용하는 것이 편해보인다.

평소에 잘 안쓰던 리눅스 공부도 되고 일석이조인듯....