저는 Docker를 처음 접했고 다양한 환경에서 다양한 프로세스를 격리한다는 개념이 마음에 들었습니다. 가장 중요하게는 기본 시스템을 오염시키지 않고 컨테이너에서 무언가를 테스트할 수 있다는 점입니다. 저는 현재 홈 서버를 Docker 설정으로 마이그레이션하는 대규모 프로젝트를 계획하고 있습니다.
내 기존 설정
- Ubuntu를 실행하는 서버(DE를 사용하여 설정을 단순화하지만 버릴 수도 있음)
- 시스템은 단일 SATA SSD, 2개의 디스크 어레이(mdadm을 사용하는 Software Raid 5에서 각각 3개의 디스크, 각각 4TB 및 3TB)에 설치되고 및 에 설치
/share
됩니다/share2
. - Plex 미디어 서버: 일부 라이브러리는 한 공유에 있고 일부는 다른 공유에 있으며 Plex 데이터도 공유에 있습니다.
- Samba 서버: 집에 있는 여러 Windows 컴퓨터와 공유
- Crashplan: 2개의 어레이 전체를 백업하는 데 사용됩니다.
- Insync: 공유 중 하나에서 내 Google 드라이브를 동기화하는 데 사용되므로 Samba를 통해 로컬로 액세스할 수도 있습니다.
- 웹 서버: 일부 소규모 웹사이트 테스트에 사용됩니다.
- 네트워크 서비스: 전송 다운로드 스테이션, SickRage, Unify 네트워크 컨트롤러
표적
따라서 이해한다면 다음 스키마를 사용해야 합니다.
- Ubuntu를 호스트 OS로 사용(기존 OS를 재사용하지만 일부 정리가 필요함)
- mdadm이 호스트 운영 체제에 설치되어 있습니다(이미 존재하며 모두 설정되었습니다).
- 다음 컨테이너가 있는 Docker 호스트
- 삼바 서버
- 플렉스 미디어 서버
- 비상 계획
- 동기화 중
- 네트워크 서버
- 확산
- 병적인 분노
- 통합 네트워크 컨트롤러
피할 수 없는 질문
내 질문은 다음과 같습니다
- 기본 아키텍처가 올바른가요? (기본적으로 어떻게 작동하는지 이해합니까?)
- 컨테이너 간에 데이터가 올바르게 공유됩니까? 예를 들어 Samba를 통해 파일을 업데이트하면 Crashplan 컨테이너가 해당 파일을 백업하고 Insync 컨테이너가 이를 Google 드라이브에 동기화합니다. 나는 괜찮을 것이라고 생각하지만 내가 찾은 다른 기사에서는 항상 다음과 같이 말합니다. 데이터를 변경하는 컨테이너를 실행한 다음 두 번째 컨테이너를 실행하면 수정된 데이터가 표시됩니다. 하지만 컨테이너가 실행되고 있지 않습니다.함께그럼 여기서 질문이 있습니다.
- 이제 전환에 대한 까다로운 질문이 나옵니다. 내가 찾은거기(두 번째 설명 참조) 호스트에서 볼륨의 데이터를 변경하면 안 됩니다. 그렇지 않으면 데이터가 손상될 수 있습니다. 한 번에 모든 것을 변경할 수는 없습니다. 하나의 컨테이너를 구현한 후 제대로 실행되면 다음 컨테이너로 넘어가는 식으로 진행하고 싶습니다. 내가 엉망으로 만들었나요? 모든 컨테이너와 단계를 한 번에 준비해야 합니까?