Docker et OpenShift sont les deux frameworks pour implémenter un service PaaS.
Comment se comparent-ils dans l'architecture et les fonctionnalités?
La principale différence est que Docker en tant que projet se concentre uniquement sur le conteneur d'exécution, tandis que OpenShift (en tant que système) inclut à la fois le conteneur d'exécution ainsi que les interfaces REST, coordination et Web) pour déployer et gérer des conteneurs individuels.
En comparant uniquement les conteneurs d'exécution, OpenShift et Docker utilisent tous deux des fonctionnalités d'isolation du noyau pour séparer les processus des locataires. Pour Docker qui est principalement via LXC et pour OpenShift qui est largement via SELinux et Multiple Category Security (MCS). Les deux utilisent des groupes de contrôle pour limiter le processeur, la mémoire et IO de locataires. Upstream OpenShift étudie LXC pour réduire l'effort à long terme.
Docker utilise AUFS pour le partage avancé de copie sur disque et de fichier, OpenShift ne nécessite ni n'est incompatible avec un tel système.
A l'intérieur du conteneur, OpenShift modélise des unités de fonctionnalités (serveurs Web, dbs) via des "cartouches", qui sont un ensemble de hooks de script Shell qui sont appelés lorsque le système est appelé. L'API est décrite ici . Une cartouche est à peu près similaire à une image Docker.
Openshift décrit également l'API par laquelle un courtier (coordinateur) communique avec des nœuds (serveurs qui hébergent plusieurs conteneurs de locataires) pour appeler des points de terminaison dans ce conteneur.
MODIFIÉ POUR AJOUTER: Depuis juin 2015, OpenShift Origin 1.0 s'exécute au-dessus de Docker et Kubernetes, et vous pouvez créer et développer des applications multi-conteneurs qui s'exécutent sur le Docker runtime. OpenShift ajoute la construction, le flux de travail d'image et la promotion, et des opérations de cluster de conteneurs sécurisées au-dessus de Kube et Docker
J'ai pensé que je devrais mettre à jour les réponses à cette question avec des informations disponibles vers la fin de 2018.
À l'heure actuelle, la situation est un peu plus compliquée que lorsque la question avait été posée à l'origine. À l'heure actuelle, Docker Inc. est le principal développeur de docker et Moby - qui est actuellement le projet en amont pour le runer docker et l'édition commerciale d'entreprise de docker, imaginativement appelée Docker Enterprise Edition.
L'analyse contemporaine de cette question entraînerait une comparaison de Docker Enterprise Edition avec RedHat OpenShift. Ces plates-formes de conteneurs sont en concurrence directe les unes avec les autres et sont considérées comme des distributions Kubernetes pouvant être exécutées sur site et dans le cloud. Au moment de la rédaction de ce document, Docker-EE de Docker Inc. est en tête du peloton en termes de fonctionnalités et de ventes, mais la concurrence est rude de la part des fournisseurs de cloud public qui proposent des plates-formes kubernetes en tant que service et commencent pour passer à des plates-formes de conteneurs sans serveur plus avancées.
J'ai trouvé quelques lectures intéressantes sur ce sujet au cours des deux dernières années:
Voici de loin la meilleure explication pour débutants. https://deis.com/blog/2016/kubernetes-illustrated-guide/
Ce n'est pas une blague, parfois nous devons voir les choses comme un enfant pour vraiment comprendre.
Je ne dirais pas qu'ils sont même comparables. Openshift est une solution d'entreprise par redhat qui s'appuie sur kubernetes. Kubernetes n'est qu'un cadre pour aider à organiser et automatiser le travail avec les conteneurs Docker. Je commencerais par la vidéo et regarderais les kupernetes à un niveau inférieur. Une fois que vous êtes à l'aise, commencez à regarder les fonctionnalités ajoutées par openshift.