在运行容器之前运行bash命令

我想运行一个预先存在的Docker镜像,如下所示:

docker run -d --name cdt-selenium selenium/standalone-firefox:3.4.0-chromium 

所以没有我为这个图像控制的Dockerfile。 不过,我想复制一些文件到这个容器中。

如果我确实控制了Dockerfile,我想运行这些命令:

 RUN mkdir -p /root/cdt-tests/csv-data COPY ./csv-data/* /root/cdt-tests/csv-data 

有没有办法与上面的Docker运行命令在同一行中运行这些命令?

我试过这个:

 docker run -d --name cdt-selenium selenium/standalone-firefox:3.4.0-chromium docker exec cdt-selenium mkdir -p /root/cdt-tests/csv-data docker cp cdt-selenium:/root/cdt-tests/csv-data ./csv-data 

但是我在docker exec线上遇到了一个权限错误

所有图像都有一个FROM行,可以是任何其他图像。 所以你可以做一个Dockerfile:

 FROM selenium/standalone-firefox:3.4.0-chromium USER root RUN mkdir -p /root/cdt-tests/csv-data COPY ./csv-data/* /root/cdt-tests/csv-data USER seluser 

这将与您的命令运行build立自己的形象。

你会build立它并创build你自己的标签:

 docker build -t alexander/selenium:3.4.0-chromium . 

然后运行它:

 docker run -d --name cdt-selenium alexander/selenium:3.4.0-chromium 

编辑:您运行的exec命令失败,因为docker作为一个不同的用户运行这个容器。 你可以在Dockerfile中看到。 要解决这个问题,请使用root用户选项( -u root )运行exec:

 docker exec -u root cdt-selenium mkdir -p /root/cdt-tests/csv-data