Docker는 프로덕션 배포에 일반적으로 충분히 안정적인가요?

안녕하세요,

이것은 주제와 약간 벗어난 질문입니다.

저희는 웹 애플리케이션을 패키징 및 배포하고 있으며, 의존성 버전(예: 오래된 배포판에서 더 새로운 Python 버전 사용)을 제어하기 위해 deb/rpm 배포 방식을 컨테이너 방식으로 전환해야 할 필요성을 느끼고 있습니다.

LXC/LXD를 둘러보았는데, 컨테이너 내부에 상태를 저장하는 전통적인 애플리케이션 개발 방식에 대해 매력적으로 느껴졌습니다. 하지만 RHEL/CentOS에도 배포해야 하는데, LXC와 LXD 패키지의 상태가 매우 불안정해 보입니다. 또한 LXD도 LXC도 RHEL 생태계에서 미래를 약속받지 못한 것 같습니다.

저는 Docker가 지난 몇 년간 여러 설계 및 보안 문제를 겪었기 때문에, 그리고 저희 같은 전통적인 개발자들이 받아들이기 어려운 무상태(stateless) 컨테이너 패러다임 전환 때문에 Docker를 다소 꺼려왔습니다.

애플리케이션 가동 시간(uptime)이 매우 중요한 소규모 및 대규모 프로덕션 배포 환경에서 Docker는 이제 신뢰할 수 있는 플랫폼이 되었나요?

그리고 Docker를 사용하여 앱을 패키징 및 배포할 때의 모범 사례는 어떤 것이 있을까요?

Discourse가 Docker로만 배포되고 대규모 배포 사례도 있을 것 같아, 이 질문을 할 수 있는 가장 좋은 곳이라고 생각되어 여쭤봅니다.

감사합니다

당사는 베어 메탈과 클라우드를 아우르는 수십 개 데이터센터에서 수백 대의 서버를 운영하고 있으며, Discourse 앱의 모든 부분이 Docker 컨테이너에서 실행됩니다.

Docker에는 상당한 수의 버그가 있지만, 우리에게 이점이 문제점을 상회합니다.

한 가지 사항:

이 표현이 정확히 무엇을 의미하는지 모르겠지만, 데이터베이스 데이터와 같은 장기 상태는 일반적으로 호스트에 매핑되는 볼륨에 보관됩니다.

Discourse 컨테이너가 Ubuntu와 RHEL 계열 배포판(Ubuntu 18.04/16.04 및 CentOS 7/8) 호스트 모두에서 문제 없이 실행되는 것으로 알려져 있나요?

이것이 Docker에서 기대되는 동작인가요?

대부분의 사용자가 Ubuntu를 사용하며, 이것이 권장되는 운영 체제입니다.

고객의 요청에 따라 CentOS 7에서 온프레미스 배포 환경을 몇 개 관리하고 있으며, 아무런 문제가 없습니다.

Ansible 역할의 관련 부분:

- name: add docker repository (CentOS)
  get_url:
    url: "https://download.docker.com/linux/centos/docker-ce.repo"
    dest: '/etc/yum.repos.d/docker-ce.repo'
    owner: root
    group: root
    mode: 0644
  when: ansible_distribution == 'CentOS'

- name: install docker
  package:
    name: "{{ item }}"
    state: present
  with_items:
  - docker-ce
  - docker-ce-cli
  - containerd.io

- name: ensure docker is started and enabled at boot
  service:
    name: docker
    state: started
    enabled: yes

우리는 모든 인프라를 Debian에서 운영합니다. RHEL은 어디에도 사용하지 않습니다.