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

启动后在docker容器内自动运行命令+;卷装,docker,dockerfile,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/

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

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/ .

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

尝试使用docker文件中的CMD选项来运行tar命令

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


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


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

您是否只需要
CMD
?容器命令“tar command.”未找到或不存在。。(可能是因为它发生在卷装载之前?)你说的“自动化”是什么意思?在没有您参与的情况下按计划运行命令?
CMD ["tar", "-cvpzf", "/mybackup.tar", "-C", "/yyy/", "."]