Voici mon problème:
J'ai une tâche exécutant une image de docker sur Amazon ECS mais je voudrais créer une nouvelle image de docker à partir de l'instance en cours d'exécution du conteneur.
Je vois l'identifiant de l'instance sur Amazon Ecs, j'ai fait une AMI mais je voudrais faire une nouvelle image docker que je peux extraire d'Amazon.
Des idées ?
Cordialement et merci
Outre la réponse fournie par @Ben Whaley, je vous suggère personnellement d'utiliser les API Docker. Pour utiliser les API Docker, vous devez configurez le port du démon docker et la procédure est expliquée ici configuration du port du démon docker
Permet d'exécuter un conteneur en utilisant une image Ubuntu de base et de créer un dossier à l'intérieur du conteneur :
#docker run -it ubuntu:14.04 /bin/bash
root@58246867493d:/#
root@58246867493d:/# cd /root
root@58246867493d:~# ls
root@58246867493d:~# mkdir TEST_DIR
root@58246867493d:~# exit
Statut du conteneur sorti:
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58246867493d ubuntu:14.04 "/bin/bash" 2 minutes ago Exited (127) 57 seconds ago hungry_turing
Fichier JSON qui est une entrée pour valider un conteneur:
#cat container_create.json
{
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"property1": {},
"property2": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Cmd": null,
"Image": "ubuntu:14.04",
"Volumes": {
"additionalProperties": {}
},
"Labels": {
"property1": "string",
"property2": "string"
}
}
API pour valider un conteneur
# curl -X POST http://127.0.0.1:6000/commit?container=58246867493d\&repo=ubuntu\&tag=15.0 -d @container_create.json --header "Content-Type: application/json" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 593 100 81 100 512 175 1106 --:--:-- --:--:-- --:--:-- 1108
{
"Id": "sha256:acac1f3733b2240b01e335642d2867585e5933b18de2264315f9b07814de113a"
}
L'ID généré est le nouvel ID d'image généré à partir de la validation d'un conteneur.
Obtenir des images de docker
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
**ubuntu 15.0 acac1f3733b2 10 seconds ago 188MB**
ubuntu 14.04 132b7427a3b4 10 hours ago 188MB
Exécutez l'image nouvellement créée pour voir les modifications validées dans le conteneur précédent.
# docker run -it ubuntu:15.0 /bin/bash
root@3a48af5eaec9:/# cd /root/
root@3a48af5eaec9:~# ls
TEST_DIR
root@3a48af5eaec9:~# exit
Pour construire une image à partir d'un fichier Docker, comment construire une image à l'aide de l'API Docker
Pour plus d'informations sur les API Docker , reportez-vous ici.
Pour créer une image à partir d'un conteneur, exécutez la commande ci-dessous:
docker commit hw_container hw_image
Tu peux courir docker commit
( docs ) pour enregistrer le conteneur dans une image, puis envoyez cette image avec une nouvelle balise dans le registre.
Cela peut être facilement fait en utilisant "docker commit".
Disons que vous avez besoin d'une image, basée sur la dernière version de NGINX, avec PHP, build-essential et nano installés. Je vais vous guider à travers le processus d'extraction de l'image, d'exécution du conteneur, d'accès au conteneur, d'ajout du logiciel et de validation des modifications dans une nouvelle image qui peut ensuite être facilement utilisée comme base pour vos conteneurs de développement.
Tirer l'image et exécuter le conteneur:
Sudo docker pull nginx
Sudo docker run -it --name nginx-template-base -p 8080:80 nginx
Modification du conteneur:
apt-get install nano
apt-get install php5
Validez les modifications:
Sudo docker commit CONTAINER_ID nginx-template
Le modèle nouvellement créé est prêt et vous pouvez l'exécuter en utilisant:
Sudo docker run -it --name nginx-dev -p 8080:80 nginx-template