我通过以下图像创建了一个码头工人:
我修改了文件,在运行的docker的/ var / www文件夹中添加了一个新文件。我需要将此更改保存为新图像,但我不知道该怎么做。我检查了docker commit,但对我不起作用。
你能帮我吗?
答案 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
然后,您可以将该映像提交到新映像,然后将看到您的修改已保存。