从运行的Docker创建映像

时间:2018-10-30 16:37:18

标签: docker

我通过以下图像创建了一个码头工人:

  

https://hub.docker.com/r/tplatform/aws-linux-httpd24-php56/

我修改了文件,在运行的docker的/ var / www文件夹中添加了一个新文件。我需要将此更改保存为新图像,但我不知道该怎么做。我检查了docker commit,但对我不起作用。

你能帮我吗?

2 个答案:

答案 0 :(得分:0)

Docker commit是执行您所要求的工具。可能您使用的是错误的。 示例:

$ docker run -dit --name=Nginx -p 80:80 nginx
68188c608160754736f192d535742b9d0dfbc3c09564c1731741c08c211b219f
$ docker exec -it Nginx /bin/bash
root@68188c608160:/# touch New_file
root@68188c608160:/# apt-get update     
Get:2 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Ign:1 http://cdn-fastly.deb.debian.org/debian stretch InRelease                                   
Get:3 http://cdn-fastly.deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Get:5 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [454 kB]
Get:4 http://cdn-fastly.deb.debian.org/debian stretch Release [118 kB]
Get:6 http://cdn-fastly.deb.debian.org/debian stretch Release.gpg [2434 B]              
Get:7 http://cdn-fastly.deb.debian.org/debian stretch-updates/main amd64 Packages [5152 B]
Get:8 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 Packages [7099 kB]
Fetched 7864 kB in 4s (1767 kB/s)    
Reading package lists... Done
root@68188c608160:/# exit
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
68188c608160        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   Nginx
$ docker commit Nginx nginx-updated:latest
sha256:dcc2f09f523eded0b2d33abb47e99b83453c12fb6ba958b441111f9ff40c5a8a
$ docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
nginx-updated                                                     latest              dcc2f09f523e        3 seconds ago       156MB
nginx                                                             latest              dbfc48660aeb        2 weeks ago         109MB

答案 1 :(得分:0)

问题是此文件:/tmp/install_and_run.sh
在此文件中,您可以看到包含以下内容的行:echo "OK" > /var/www/html/index.html

您修改index.html内容并将其提交到新图像。在将该映像作为容器启动后,将执行该外壳文件(因为它在Dockerfile的ENTRYPOINT中)并覆盖您的内容,然后在OK中再次插入index.html

您可以执行以下技巧来解决它:

1.在此目录中创建一个index.html,例如:/var/www/并将您的内容插入其中。
2.在/tmp/install_and_run.sh中注释或删除此行:echo "OK" > /var/www/html/index.html
3.改为放置以下代码:cp /var/www/index.html /var/www/html/index.html

然后,您可以将该映像提交到新映像,然后将看到您的修改已保存。

相关问题