如何从亚马逊的正在运行的容器中创build一个新的Docker镜像?

这是我的问题:

我有一个任务在amazon ECS上运行docker镜像,但是我想从容器的运行实例中创build一个新的docker镜像。

我在Amazon Ecs上看到了这个实例的id,我做了一个AMI,但是我想创build一个新的docker镜像,我可以从亚马逊中拉出来。

有任何想法吗 ?

问候和感谢

除了@Ben Whaley提供的答案,我个人build议您使用Docker API。 要使用Docker API,您需要configurationdocker守护程序端口,并在此处说明 configurationdocker守护程序端口的过程

让我们使用一个基本的Ubuntu镜像运行一个容器,并在容器中创build一个文件夹

#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 

退出容器的状态:

 # 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 

JSON文件是提交容器的input:

 #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

 # 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" } 

生成的Id是从提交容器构build的新的Image Id。

获取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 

运行新build的Image以查看上一个容器中提交的更改。

 # docker run -it ubuntu:15.0 /bin/bash root@3a48af5eaec9:/# cd /root/ root@3a48af5eaec9:~# ls TEST_DIR root@3a48af5eaec9:~# exit 

从Docker文件构build图像, 如何使用docker API构build图像

有关Docker API的更多信息 ,请参阅此处。

您可以运行docker commit ( docs )将容器保存到图像,然后将该图像与新标记一起推送到registry中。