필요한 구성 요소가 다음과 같다고 가정합니다: nginx tomcat webapp redis
저희 운영체제는 디베인입니다
nginx는 컨테이너입니다
tomcat webapp은 컨테이너입니다
redis는 컨테이너입니다
....
그런 다음 이러한 컨테이너를 통합하고 배포를 완료하세요
포트 간 접속 방법이 헷갈리나요? 데이터베이스 파일은 어디에 있나요? 컨테이너 간에 파일을 공유할 수 있나요?
저는 Docker를 사용해 본 적이 없어서 제 생각이 맞는지 잘 모르겠습니다.
1. Docker를 가상 머신으로 사용할 수 있으므로 최소한 사용에 따른 학습 비용은 없습니다. Docker가 자동으로 구성할 수 있도록 가상 머신의 일부 작업 단계를 Dockerfile에 작성하여 더 명확하고 명확하게 만드는 것입니다. 그러나 일부 작업 및 구성 단계는 일반 설치에서 구현하기 어려울 수 있습니다. Docker 허브에서 다른 사람의 작성 방법을 배워야 합니다.
이런 방식으로 포트 간 액세스 및 파일 공유는 문제가 되지 않습니다. 데이터베이스 파일을 컨테이너에 배치하거나 VOLUME을 통해 로컬 파일 시스템에서 컨테이너로 마운트할 수 있습니다.
2. docker를 사용하여 마이크로서비스를 구축합니다. 이는 마이크로서비스를 여러 컨테이너로 나누어 대규모 서비스의 내부 서비스를 구성하는 것을 의미합니다. 이 경우 컨테이너를 지정하기 위해 실행할 때 --link 매개변수를 지정하여 포트 간 액세스를 지정할 수 있습니다. 컨테이너 파일에 -v(--volume)를 지정하여 데이터베이스 파일을 로컬 디렉터리에서 컨테이너로 마운트할 수 있습니다. 컨테이너 간 공유는 폴더를 VOLUME으로 지정하여 수행할 수 있습니다. 본질적으로 로컬 파일 시스템의 디렉터리를 여러 컨테이너에 마운트하는 것입니다.
3. 실제로 마이크로서비스를 사용하려면 다양한 구성 요소를 관리하는 데 도움이 되는 docker-compose 기술을 이해해야 합니다. yml 파일에 컨테이너의 실행 구성만 작성하면 됩니다.
내 것은 mysql tomcat fastdfs입니다.
에 액세스합니다.mysql은 -p를 사용하여 3306 포트를 매핑합니다.
tomcat 8080 fastdfs가 8081로 변경되었습니다.
호스트 IP는 10.0.15.4
따라서 tomcat의 구성은 프로젝트는 10.0 .15.4 / 3306 / 8081
에 연결하는 것입니다. 그러면 iptables는 dokcer 컨테이너 네트워크 세그먼트를 열어 호스트
nginx가 있다면 nginx에 있는 tomcat의 8080으로 직접 전달하세요
docker-compose, docker 서비스 오케스트레이션
사용하는 모든 구성 요소가 애플리케이션을 제공하는 경우 공식적으로 제공되는 Compose와 같은 Docker 오케스트레이션 도구를 사용하는 것이 좋습니다.
컨테이너 간 파일과 데이터는 데이터 볼륨을 마운트하여 공유할 수 있습니다.
컨테이너 간 연결에 가장 편리한 방법은 두 컨테이너 간에 전용 채널을 설정하는 링크 매개변수를 통해 연결하는 것입니다. 외부 세계에 데이터 포트를 개방함으로써 발생하는 보안 위험을 제거합니다.
하고 싶다면 가장 기본적인 것을 먼저 익히는 것이 좋습니다.