AWS, Docker/Docker

Docker 활용하기 <1. 웹서버 설치 및 실행>

zooyeonii 2022. 2. 17. 15:49

reference : 시작하세요!도커/쿠버네티스-용찬호 지음

 

1. 컨테이너 외부에 노출시키기

컨테이너는 가상 IP주소를 할당받는다. 기본적으로 172.17.0._의 IP를 순차적으로 할당받게 된다. 

컨테이너 내에서 ifconfig 명령어를 통해 다음과 같이 확인할 수 있다. ->명령어에서 오류나면 해결법

도커의 가상 IP는 172.17.0.4 임을 알 수 있다. 

이는 local host를 의미한다. 

컨테이너가 외부에서 접근할 수 있으려면, eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 한다.

1
$ docker run -it --name webserver -p 3306:3306 -80:80 ubuntu:18.04
cs

-p 옵션을 통해 컨테이너 포트를 호스트의 포트와 바인딩해서 연결해줄 것이다. 이때 80:80은 [호스트 포트]:[컨테이너 포트] 이다. 꼭 80:80으로 할 필요는 없으며, 호스트 포트를 특정 IP주소:포트 로 사용해도 된다. 

아파치 웹 서버가 기본적으로 80번 포트를 사용한다고 해서 80:80으로 설정해주었다. 

이후 docker ps 로 어느 포트와 연결됐는지 PORTS에서 확인할 수 있다. 

처음 컨테이너로 들어오면 apt-get update가 필수다. 아니면 에러가 발생해서 명령어를 사용하지 못한다. 현재 아파치 웹 서버를 설치할 것이기 때문에 다음과 같이 명령어를 입력해주었다. 

1
2
3
apt-get update
apt-get install apache2 -y
service apache2 start
cs

마지막 명령어를 입력했을 때, 다음과 같은 에러를 마주하게 되었다. 

참고자료   

해당 참고 자료에서는, ServerName을 지정해줄 것을 제안한다.

1
2
3
echo "ServerName localhost" >> /etc/apache2/apache2.conf
$ grep ServerName /etc/apache2/apache2.conf
apache_webserver localhost
cs

이때 처음에 "ServerName"이 사용자 지정 서버 이름을 넣는 줄 알고 바꿔줬더니, Syntax Error가 발생했다. 

명령어 그대로 ServerName을 쓰도록 한다.. 

* The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 228 of /etc/apache2/apache2.conf:

다시 시도해보았다. 

PORTS에 보면 어디에 호스트와 컨테이너가 어느 포트로 연결되는지 보인다

apache 웹 서버가 실행되고 있다는 문구가 떴다. 

하지만 실제 웹브라우저에서 확인했을 때 자꾸 연결할 수 없다고 나오는데.......
localhost:80  localhost:3306에 연결이 안된다.. 뭐가 문제인걸까??

 

:(