在运行容器之前运行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