我怎样才能运行一个docker容器,并提交脚本完成后的变化?
我想设置一个cron作业来在Docker容器中运行一组命令,然后将更改提交到Docker镜像。 我可以运行容器作为守护进程,并使用此命令获取容器ID:
CONTAINER_ID=$(sudo docker run -d my-image /bin/sh -c "sleep 10")
但是我在第二部分遇到了麻烦 – 一旦sleep 10
命令完成,就会对图像进行更改。 有没有一种方法可以告诉我什么时候docker集装箱将要被杀死,然后再运行另一个命令呢?
编辑:作为替代,有没有办法通过在容器中的shell脚本来触发ctrl-pq
离开容器运行,但返回到主机?
在前台运行它,而不是守护进程。 当它结束时,启动它的脚本需要控制并提交/推送它
有以下几种方法来保存容器数据:
-
Docker卷
-
Docker提交
a)从Ubuntu映像创build容器并运行bashterminal。
$ docker run -i -t ubuntu:14.04 /bin/bash
b)在terminal内部安装curl
# apt-get update # apt-get install curl
c)离开集装箱docker
# exit
d)通过执行以下命令logging您的容器ID:
$ docker ps -a
e)将容器保存为新图像
$ docker commit <container_id> new_image_name:tag_name(optional)
f)validation你可以看到你的新卷像安装。
$ docker images $ docker run -it new_image_name:tag_name bash # which curl /usr/bin/curl
如果你想要一个正在运行的所有的自动提交,试试这个。 把这个放在一个cron中,如果这有帮助的话
#!/bin/bash for i in `docker ps|tail -n +2|awk '{print $1}'`; do docker commit -m "commit new change" $i; done