Docker로 Nginx 띄우기

dandb3·2024년 1월 4일
0

webserv

목록 보기
6/6

도커로 nginx 실행하는 방법 (ubuntu 이미지 활용)

docker run -it ubuntu
apt update
apt install nginx vim net-tools -y

nginx 실행관련 명령어

# 실행
service nginx start

# 정지
service nginx stop

# 재시작
service nginx restart
  • configuration file을 수정한 이후 변경사항을 적용시키려면 재시작을 다시 해 주어야 한다.

configuration file 작성

  • nginx의 configuration file은 /etc/nginx/ 경로에 존재.
  • 다른 것은 건드리지 않고, 서버블록만 작성을 원한다면 /etc/nginx/conf.d/ 디렉토리 내부에 *.conf 형태로 configuration file을 작성해서 server블럭 및 상세내용을 작성하면 된다.
    • 위는 /etc/nginx/conf.d/server.conf의 예시 코드이다.

네트워크 정보 확인

  • 사진을 보면 172.17.0.2의 ip주소를 갖는 것을 확인할 수 있다.

네트워크 브리지 추가

docker network create -d bridge [브리지 이름]
  • 새로운 네트워크 대역을 할당할 수 있다. (일종의 공유기 설치 역할)
  • 위의 "네트워크 정보 확인" 부분에서 컨테이너의 ip주소가 172.17.0.2로 할당이 되어있었는데, 이는 docker의 기본 브리지의 ip대역이 172.17.0.0이고, 컨테이너 생성 시 이 브리지에 자동으로 연결이 되기 때문이다.

브리지에 컨테이너 연결

docker network connect [브리지 이름] [컨테이너 이름]
  • 컨테이너를 브리지에 연결한다.

예제

  • 브리지 하나 생성 전과 후 네트워크 장비 확인

  • 브리지와 컨테이너 연결 전 컨테이너의 네트워크 인터페이스

  • 브리지와 컨테이너 연결

  • 브리지와 컨테이너 연결 후 컨테이너의 네트워크 인터페이스

    • 172.18.0.2 인터페이스가 하나 더 생긴 것을 확인할 수 있다.
    • 또한, 브리지의 ip대역은 172.17.0.0, 172.18.0.0, ... 순으로 정해진다는 것도 알 수 있다.

현재 열려있는 소켓 확인

  • ss -lt 명령어를 사용해서 현재 listening중인 tcp소켓을 확인 가능하다.

서로 다른 두 컨테이너를 이용하여 http 통신하기

컨테이너 만들어서 기본 설정하기

  • 또 하나의 컨테이너를 만들어서, 앞서 만들어놓았던 my_bridge 브리지에 연결한다.

    • 정상적으로 172.18.0.0 대역 네트워크에 연결되었음을 확인할 수 있다.
  • http 통신을 curl 명령어를 통해서 할 것이기 때문에 curl을 설치 해준다.
    apt install curl

http 통신하기 (예제)

  • 처음 만들었던 컨테이너를 호스트, 두 번째로 만든 컨테이너를 클라이언트라고 부를 것이다.

  • 기본 GET 메소드를 통해서 통신을 해 볼 것이다.

  • 테스트용으로 /test.txt파일을 서버 컨테이너에 하나 만들어 놓는다. (파일 내용은 아무거나)

  • 호스트의 nginx configuration file을 수정한다.

  • 다시 nginx를 재시작한다.

  • 클라이언트에서 curl로 요청을 보내본다.

    • 정상적으로 test.txt 파일의 내용이 출력된다.
    • curl의 문법은 자세히 다루지 않는다. 다른 블로그 참조.
profile
공부 내용 저장소

0개의 댓글