host가 각 컨테이너
트래픽을 컨테이너에 포워딩하게 포트를 분리한다.
또한, 각 컨테이너를 쉽게 식별하고 관리가 용이하도록 --name 명령어를
사용하는 습관을 갖자.
ex) nginx should listen on 80:80
httpd should listen on 8080:80
mysql should listen on 3306:3306
이번 실습에서 nginx는 proxy 서버의 역할을 하게 된다.
아파치 서버 혹은 httpd 서버는 8080:80 포트다.
참고
mysql 컨테이너를 run할 때, -e 또는 -env 명령어를 추가한다.
그러면 environment 환경변수를 해당 컨테이너에 전달한다.
docs.docker.com을 자주 참고할 것!
docker container run -d -p 3306:3306 --name db -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql
docker continaer logs db
2020-09-09 23:57:54+00:00 [Note][Entrypoint]: GENERATED ROOT PASSWORD: biozie1aedai9miekah1Lei9ziepii3d
이제 웹서버를 run 시켜보자.
참고로, -d (detach) 명령어를 추가해야 우리가 지정한 포트에 컨테이너가 연결된다.
docker container run -d --name webserver -p 8080:80 httpd
docker container run -d --name proxy -p 80:80 nginx
테스트를 해보자.
curl localhost
배웠던 명령어를 통해 컨테이너를 중지시켜보자. 그리고 삭제까지!
docker container stop db webserver proxy
docker container rm proxy webserver db