启动+卷挂载后,自动运行Docker容器中的命令

我已经创build了我的简单自己的形象。

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 docker run命令中描述这些命令?

在Dockerfile中执行的命令构build映像,并将卷连接到正在运行的容器,因此您将无法在Dockerfile本身内部运行命令并影响卷。

相反,你应该创build一个启动脚本,它是你的容器运行的命令(通过你的Dockerfile中的CMD或ENTRYPOINT)。 将逻辑放在启动脚本内部,检测是否需要初始化卷,并在容器启动时运行。 如果使用CMD运行脚本,则可以使用任何传递给docker run命令来覆盖运行该脚本,根据您的情况,这可能会也可能不是一件好事。

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

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

要么

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