우리는 우리가 제공한 동일한 Ubuntu 상자를 사용하는 실제 사용자에게 효율적이고 강력하게 업데이트를 푸시할 수 있는 방법이 필요했습니다. 우리는 또한 운영 체제를 업그레이드할 때(아시다시피 Ubuntu 업그레이드가 오래 지연됨) 패키지가 "제대로 작동한다"고 상대적으로 안전하다고 느낄 수 있도록 뭔가가 필요합니다.
처음에는 Docker에 대해 생각했지만 생각할수록 그렇지 않을 수도 있다는 생각이 더 커졌습니다. 왜냐하면 이 상자는 우리 것이고 우리는 Docker의 가치 제안에서 중요한 부분인 운영 체제를 제어하기 때문입니다. 내가 어떻게 이해하는지. 따라서 우리 컴퓨터가 항상 Ubuntu이고 기본적으로 Django 앱과 실행할 몇 가지 프로세스만 있다는 것을 알고 있다면 Docker가 deb 패키지보다 나은가요?
핵심요약: deb 패키지가 포함된 Docker의 분산 장치는 항상 Ubuntu를 실행하므로 플랫폼 독립성은 그다지 중요하지 않습니다.
답변1
컨테이너는 훌륭합니다. 애플리케이션과 해당 종속성을 함께 패키지하고 기본적으로 자동화해야 합니다. 그러면 기계에서 하나(또는 그 이상)를 자동화하는 것이 상대적으로 쉽습니다.
이는 업그레이드에 도움이 될 수 있습니다. 나중에 이 지점으로 다시 돌아오세요.
우리는 실제 사용자에게 효율적이고 강력하게 업데이트를 푸시할 수 있는 방법이 필요했습니다.
Docker와 rkt에는 모두 자체 컨테이너 저장소가 있습니다. rkt는 최소한 전체 암호화 무결성 검사도 제공합니다. Docker 컨테이너는 레이어로 구축되어 어느 정도 효율성을 제공합니다(변경된 레이어만 가져오면 됨). rkt
현재는 매번 전체 이미지를 추출합니다. 또는 적어도 제가 설치한 버전에서는 추출합니다.
이미지는 둘 사이에서 변환될 수 있습니다. 예를 들어 최근 프로젝트에서는 개발을 위해 Docker를 사용한 다음(레이어가 많은 도움이 될 수 있기 때문에) 배포를 위해 이미지를 rkt로 변환했습니다(rkt가 시스템 관리자에게 더 유용하기 때문입니다). 적어도 나에게는 보안 문제가 있습니다).
두 기술 모두 현재 빠르게 발전하고 있습니다. 예를 들어 컨테이너 형식이 변경되고 있습니다. 따라서 Docker 또는 rkt를 사용하기로 결정한 경우 자주 업그레이드해야 합니다.
참고: 모든 종속성은 컨테이너에 패키지되어 있으므로 컨테이너 외부에서 실행되는 OS 버전은 덜 중요합니다. 하지만 일반적으로 새 컨테이너를 배송합니다.모든고쳐 쓰다. 이것은 꽤 많은 대역폭을 소비합니다.
우리는 또한 운영 체제를 업그레이드할 때(아시다시피 Ubuntu 업그레이드가 오래 지연됨) 패키지가 "제대로 작동한다"고 상대적으로 안전하다고 느낄 수 있도록 뭔가가 필요합니다.
여기에 필요한 것은 테스트 실험실입니다. 업그레이드가 작동할 것이라는 확신은 주로 이미 업그레이드가 완료되었다는 사실에서 비롯됩니다.테스트를 거쳤습니다., 지원하는 모든 변형에서 반복됩니다.
컨테이너가 도움이 될 수 있습니다. 이를 사용하여 자동으로 테스트를 실행할 수 있습니다(예를 들어 GitLab의 자동화된 테스트 설정 참조). 컨테이너는 호스트 리소스 측면에서 매우 가볍고 가상 머신보다 훨씬 가볍습니다. 따라서 커밋할 때마다 자주 테스트할 수 있습니다. 그리고 배송 중인 컨테이너를 구축하는 것과 동일한 자동화된 스크립트를 사용하여 테스트를 실행해야 컨테이너 이미지가 제대로 작동하는지 확신할 수 있습니다.
그러나 실제 기본 운영 체제 업그레이드를 위해서는 실제 하드웨어에서 테스트해야 합니다. 가상 머신을 사용하여 OS 업그레이드를 테스트할 수도 있지만(이미지를 매우 쉽게 롤백하고 자동화할 수 있으므로 매우 좋습니다) 실제 하드웨어도 테스트해야 합니다. 특히 현장에 있기 때문에 업그레이드 실패 시 비용이 많이 들 수 있습니다.
간단히 말해서:컨테이너는 이러한 많은 작업에 유용하지만 앞으로 5년 동안 안정성을 안전하게 신뢰할 수 있을 만큼 소프트웨어가 아직 성숙하지 않다고 생각합니다. 다만, 1~2년 후에는 달라질 것으로 예상하고 있으니 지금이라도 생각해보면 좋을 것 같습니다.
추신: 고려해야 할 비기술적 사항: Ubuntu 아카이브에서 패키지를 다운로드하는 경우 Ubuntu는 동일한 위치에서 소스를 사용할 수 있도록 하여 GPL 준수를 처리할 수 있습니다. 컨테이너 이미지를 배송하는 경우 이에 대해 걱정해야 합니다. (물론 기기를 운반할 때도 이 작업을 수행해야 합니다.)