2017-07-28 7 views
1

Débutant complet avec Docker, mais les concepts sont collants.Docker avec amazonlinux

Goal

Créer un conteneur localement qui correspond à ma prod instance EC2. Mettez à niveau PHP7 et testez mon application.

approche

Ma première étape a consisté à créer juste une boîte linux amazon boîte de base. Montez-le et exécutez les commandes à partir de la CLI. Ensuite, je peux lentement construire les commandes pour mettre dans mon Dockerfile.

Problème

Je construis la belle course boîte yum update -Y et voir les mises à jour. Toutefois, lorsque je cours docker ps l'image n'est pas répertoriée? Donc je ne peux pas le monter. Mon fichier de composition est comme suit ...

FROM amazonlinux:2017.03 

RUN yum update -y 

Pourquoi la boîte ne reste pas dans un état ouvert?

+0

Pouvez-vous connecter à l'instance en dehors de ansible? Juste ssh normal? essayez l'option --vvv pour voir si vous pouvez y accéder. – strongjz

Répondre

2

Les conteneurs Docker s'arrêtent lorsqu'ils n'ont pas de processus à exécuter. Ajoutez un point d'entrée à votre Dockerfile pour que la machine continue à fonctionner.

Vous pouvez faire un sleep infinity ou sleep 99999 si vous n'avez aucun processus à exécuter.

FROM amazonlinux:2017.03 

RUN yum update -y 

CMD [“sleep”, “infinity”] 
2

Le conteneur du docker s'arrête lorsque toutes les commandes RUN sont terminées. Vous avez besoin d'un CMD ou d'un ENTRYPOINT qui fonctionne et ne s'arrête pas pour garder votre conteneur en vie. Pour un service Web, cela peut être Apache ou nginx ou n'importe quel service Web que vous utilisez pour servir votre application PHP7.

0

J'ai trouvé une solution alternative à la fin. En lançant BASH, j'ai réussi à faire fonctionner le conteneur.

run docker -it -p 8080: 80 --rm bash nbsite