启动+卷装入后,在docker容器内自动运行命令

时间:2016-06-12 07:59:32

标签: docker dockerfile

我已经创建了我自己的简单图像。

FROM python:2.7.11
RUN mkdir /extra/later/ \
  && mkdir /yyy

现在我可以执行以下步骤:

docker run -d -v xxx:/yyy myimage:latest 

所以现在我的音量安装在容器内。我要访问,我能够在容器内的已安装卷上执行命令:

docker exec -it container_id bash
bash# tar -cvpzf /mybackup.tar -C /yyy/ .

有没有办法在Dockerfile中自动执行这些步骤或在docker run命令中描述命令?

2 个答案:

答案 0 :(得分:1)

Dockerfile中执行的命令构建映像,并且卷附加到正在运行的容器,因此您将无法在Dockerfile本身内运行命令并影响卷。

相反,您应该创建一个启动脚本,该脚本是容器运行的命令(通过Dockerfile中的CMDENTRYPOINT)。将逻辑放在启动脚本中以检测它是否需要初始化卷,并且它将在启动容器时运行。如果您使用CMD运行脚本,您将能够使用传递给docker run的任何命令覆盖运行该脚本,这可能是也可能不是一件好事,具体取决于您的情况。

答案 1 :(得分:0)

尝试使用Dockerfile中的CMD选项来运行tar命令

CMD tar -cvpzf /mybackup.tar -C /yyy/ .

CMD ["tar", "-cvpzf", "/mybackup.tar", "-C", "/yyy/", "."]