Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Apache2 설치하여 웹서버 실행

기본적으로 도커는 컨테이너에 172.17.0.x 의 IP를 순차적 할당을 받는다.

외부로 컨테이너의 어플리케이션을 노출하기 위해서는 컨테이너IP 와 호스트IP를 바인딩 해야 한다.

Code Block
# docker run -i -t --name network ubuntu:14.04
Unable to find image 'ubuntu:14.04' locally
...
# docker run -i -t --name webserver -p 80:80 ubuntu:14.04

-p 는 컨테이너의 포트를 호스트의 포트와 바인딩한다.

Note
-p

[호스트포트] : [컨테이너포트]

호스트 7777 포트를 컨테이너의 80포트와 연결,

Code Block
# docker run -i -t -p 3306:3306 -p 192.168.56.101:7777:80 ubuntu:14.04
root@c2e5af01206c:/# apt-get update
root@c2e5af01206c:/# apt-get install -y apache2
root@c2e5af01206c:/# service apache2 start

호스트 7777 포트를 컨테이너의 80포트와 연결, 

호스트의 특정 IP 를 사용하기 위하여, 192.168.56.101:7777:80 으로 바인딩할 IP로 명시,

여러개의 포트를 외부에 노출하기 위하여 -p 옵션을 여러개 사용한다.실행이 완료되면 [호스트IP] : 7777 으로 접근이 가능하다

Info

컨테이너 내에서 아파치를 실행 했을때..다음과 같은 오류가 난다면...

Starting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

일 경우..

[/etc/apache2/apache2.conf]

파일 내

파일에서 "ServerName localhost"

설정하고 나서 

설정 후 저장.  

service apache2 restart 또는 start 하면 된다.

다음과 같이 브라우저에서 실행을 하면 [호스트IP] : 7777 으로 접근이 가능하다.

또한 호스트의 IP 와 포트를 컨테이너의 IP 와 포트로 연결한다는 개념은 

172 대역을 가진 컨테이너의 NAT IP 와 80번 포트로 서비스한다고 여겨짐.

즉, 172.17.0.x :80으로 접근할 수 있다.

 



Nginx 설치하여 웹서버 실행

Code Block
# docker run -d -p 8000:80 nginx:latest
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
8176e34d5d92: Pull complete
5b19c1bdd74b: Pull complete
4e9f6296fa34: Pull complete
Digest: sha256:4771d09578c7c6a65299e110b3ee1c0a...
Status: Downloaded newer image for nginx:latest
03c80ecf37dc0012f74ad2c6a66e1d5c13bd60d81bc7728c9815d05e7d784e36

[root@localhost ~]# curl localhost:8000
<!DOCTYPE html>
<html>
<head>
...
</html>

여러개 컨테이너들의 포트를 사용하고 게시하고 있다면

docker port 로 도커가 할당한 포트를 확인 할수 있다후 적용 해야 할 것이다.