본문 바로가기

도커(Docker)6

Nginx 웹 서버 포트 별로 Reverse Proxy 설정 Docker Compose에서 Nginx 웹 서버로 Reverse Proxy를 설정한 뒤, 외부에서 접근이 가능한 외부 포트 두 개를 오픈하고 각 포트로 클라이언트 요청이 오면 내부 서버(외부 포트에서 접근 불가)에서 결과를 가져오도록 테스트 진행 도커를 통해 총 3개의 웹 서버 컨테이너를 만들어서 테스트 1) proxy 역할을 하는 nginx 웹 서버를 생성하고, 호스트 PC에서 nginx 웹 서버로 접근 가능한 8080, 8081를 개방 2) 현재 호스트 PC인 EC2 서버 또한 외부에서 접근 가능하도록 1111, 9999 포트를 인바운드 규칙에 추가 3) proxy nginx 웹 서버 컨테이너는 8080, 8081 포트가 열린 상태이며, 외부로부터 요청(1111, 9999 포트에서 들어온 요청)이 .. 2022. 2. 4.
도커 데이터 관리(volume, mount) 도커 컨테이너는 컨테이너마다 기본적으로 독립적인 저장소를 가지고 있다. 하나의 이미지로 여러 컨테이너를 만든다면 해당 컨테이너마다 독립적인 볼륨(하나의 파일 시스템을 갖춘 접근 가능한 저장 공간)이 할당되고, 컨테이너가 삭제되면 해당 볼륨 또한 삭제된다. 문제는 컨테이너 내부에 저장된 데이터는 컨테이너가 삭제되었을 경우 같이 삭제된다. 그래서 도커에서는 데이터의 영속성을 보장하기 위하여 볼륨과 바인드 마운트를 이용한다. 볼륨과 바인드 마운트는 영속성을 보장하며 파일 시스템과 컨테이너를 분리하여 관리한다. 즉 컨테이너를 지웠다가 다시 실행해도 도커 볼륨과 연결한다면 데이터는 그대로 유지된다. 마운트(Mount) 물리적인 장치를 특정한 디렉토리 위치에 연결시켜 주는 과정 리눅스에서는 하드디스크의 파티션, C.. 2022. 1. 28.
컨테이너와 컨테이너 연결 주피터 노트북 컨테이너에 mysql 컨테이너 연결 1) MYSQL 도커 파일 작성 $ vi Dockerfile_MYSQL # Dockerfile_MYSQL FROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD=1004 ENV MYSQL_DATABASE=ben_db 2) 도커 파일 이미지 작성 $ docker build --tag mysqldb -f Dockerfile_MYSQL . 도커의 build 명령어는 현재 디렉토리의 Dockerfile 이라는 이름을 가진 파일을 읽어서 이미지로 만든다. --tag는 이미지 이름을 직접 설정하는 옵션, 작성을 안하면 디폴트로 latest가 태그로 부여진다. -f는 도커 파일명을 지정하는 옵션, 작성을 안하면 디폴트로 Dockerfile 이름 파일이 .. 2022. 1. 28.
Docker Network 네트워크 네트워크는 두 대 이상의 컴퓨터가 서로 연결되어 있는 것을 의미한다. 도커 또한 컨테이너 관점에서는 마치 독립적인 환경을 가진 가상 머신이기 때문에 컨테이너가 다른 컨테이너 또는 컨테이너를 외부와 연결시키기 위해 각각의 컨테이너를 식별할 수 있는 IP주소가 필요하고, 도커에서는 이를 미리 가상 네트워크로 설정해놓았다. 도커는 호스트 컴퓨터(서버)의 물리적 네트워크와 도커의 가상 네트워크 두 가지로 네트워크가 이루어져 있다. 호스트 NIC와 컨테이너의 연결 통로, docker0(가상 브릿지) Linux는 Docker를 설치하면 docker0라는 가상의 네트워크 인터페이스(연결 통로)가 자동으로 생성되는데, 가상 브리지(bridge)라고 부른다. 그림 맨 아래의 eth0은 호스트 서버의 물리 NIC.. 2022. 1. 27.
도커 컴포즈(Docker Compose) 도커 컴포즈(Docker Compose) 도커 컨테이너로 시스템을 구축하면 하나 이상의 컨테이너가 서로 통신해야 할 때, 그 사이에 의존 관계가 생긴다. 예를 들어 웹 서비스에서 데이터 베이스와 백엔드 서버는 서로 연결되어 동작해야 하는데 각각을 컨테이너로 작성하여 따로 실행하게 되면 관리하기가 힘들다. 이때 필요한 것이 Docker Compose이다. Docker Compose는 여러 개의 도커 컨테이너를 정의하여 한번에 많은 컨테이너를 실행하고 관리할 수 있는 툴이다. docker-compose.yml이라는 파일로 여러 컨테이너에 대한 옵션을 작성하면, docker-compose up이라는 한 번의 명령어로 서비스를 시작할 수 있다. 참고로 docker-compose.yml 파일은 YAML 형식으로 .. 2022. 1. 26.
가상화, 도커 의미(이미지와 컨테이너) 도커가 필요한 이유는 무엇인가? 내가 만든 파워포인트 문서를 다른 컴퓨터에서 열었을 때, 글꼴이 다르게 나오거나 한글파일의 버전이 달라서 글꼴이 깨져서 나온 경험을 해봤을 것이다. 이처럼 다른 하드웨어나 운영체제에서도 내가 만든 파일이나 프로그램을 제대로 실행시키려면 내 컴퓨터와 동일한 환경을 갖추어야 한다. 가상화 기술인 도커를 사용하면 내 컴퓨터의 작업 환경과 버전 정보 전체를 다른 컴퓨터 환경에 복제하여 어떤 컴퓨터 환경에서도 애플리케이션을 안정적으로 실행할 수 있다. 가상화 가상화는 물리적인 하드웨어(HW) 장치를 논리적인 객체로 추상화하는 것을 의미한다. 즉, 하나의 하드웨어를 여러 대처럼 동작시키거나 반대로 여러 대의 장치를 묶어 하나의 장치인 것처럼 사용자에게 공유자원으로 제공하는 기술이다... 2022. 1. 21.