我想设置一个 cron 作业以在 docker 容器中运行一组命令,然后将更改提交到 docker 镜像。我可以将容器作为守护进程运行并使用以下命令获取容器 ID:
CONTAINER_ID=$(sudo docker run -d my-image/bin/sh -c "sleep 10")
但是我在第二部分遇到了问题——一旦 sleep 10
命令完成,就提交对图像的更改。有没有办法让我知道 docker 容器何时将被杀死并在它之前运行另一个命令?
编辑:作为替代方案,有没有办法通过容器中的 shell 脚本触发 ctrl-p-q
以使容器保持运行但返回主机?
最佳答案
持久化容器数据有以下几种方式:
Docker 卷
Docker 提交
a) 从 ubuntu 镜像创建容器并运行 bash 终端。
$ docker run -i -t ubuntu:14.04 /bin/bash
b) 在终端内安装 curl
# apt-get update # apt-get install curl
c) 退出容器 docker
# exit
d) 通过执行以下命令记下您的容器 ID:
$ docker ps -a
e) 将容器保存为新图像
$ docker commit <container_id> new_image_name:tag_name(optional)
f) 验证您是否可以看到安装了 curl 的新图像。
$ docker images $ docker run -it new_image_name:tag_name bash # which curl /usr/bin/curl
关于bash - 脚本完成后如何运行 docker 容器并提交更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30607569/