Docker est-il généralement assez fiable pour un déploiement en production ?

Salut,

Ceci est une question hors sujet.

Nous emballons et distribuons une application web et nous sentons le besoin de passer du déploiement en .deb/.rpm à une approche basée sur les conteneurs afin de mieux contrôler les versions des dépendances (comme une version plus récente de Python sur des distributions plus anciennes).

J’ai regardé du côté de LXC/LXD, ce qui semble tentant pour l’ancienne méthode de développement d’applications avec l’état stocké à l’intérieur du conteneur. Mais nous devons également déployer sur RHEL/CentOS, et l’état des paquets LXC et LXD y est déplorable. Il ne semble pas que LXD ni LXC aient un avenir dans l’écosystème RHEL.

J’ai quelque peu résisté à Docker en raison de divers problèmes de conception ou de sécurité qu’il a connus au fil des ans, mais aussi à cause du changement de paradigme vers des conteneurs sans état que nous, les vieux de la vieille, devons adopter.

Docker est-il désormais une plateforme fiable pour des déploiements en production, petits ou grands, où la disponibilité de l’application est vraiment cruciale ?

Et quelles seraient les meilleures pratiques pour emballer et distribuer des applications avec Docker ?

Puisque Discourse est exclusivement déployé sur Docker et que je suis sûr qu’il existe des déploiements à grande échelle, cela semble être le meilleur endroit pour poser cette question.

Merci

Nous gérons des centaines de serveurs répartis sur plusieurs centres de données, en mode bare metal et cloud, et chaque composant de l’application Discourse s’exécute dans des conteneurs Docker.

Docker a certes son lot de bugs, mais pour nous, les avantages l’emportent sur les inconvénients.

Juste une précision :

Je ne sais pas exactement ce que vous voulez dire par là, mais les données d’état à long terme, comme celles d’une base de données, sont généralement conservées dans des volumes mappés vers l’hôte.

Les conteneurs Discourse sont-ils connus pour fonctionner sans problème à la fois sur des hôtes avec Ubuntu et des distributions RHEL (Ubuntu 18.04/16.04 et CentOS 7/8) ?

Ceci est-il attendu de la part de Docker ?

La plupart des gens utilisent Ubuntu, c’est le système d’exploitation recommandé.

Nous gérons plusieurs déploiements sur site sous CentOS 7 (à la demande du client) sans aucun problème.

Parties pertinentes du rôle Ansible :

- name: ajouter le dépôt Docker (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: installer Docker
  package:
    name: "{{ item }}"
    state: present
  with_items:
  - docker-ce
  - docker-ce-cli
  - containerd.io

- name: s'assurer que Docker est démarré et activé au démarrage
  service:
    name: docker
    state: started
    enabled: yes

Nous exécutons toute notre infrastructure sur Debian. Pas de RHEL nulle part.