我想让一个脚本在Docker容器中运行一系列命令,然后将文件复制出来。如果我使用docker run
执行此操作,则无法取回容器ID,我需要docker cp
。 (我可以尝试将其从docker ps
中删除,但这似乎有风险。)
似乎我应该能够
docker create
创建容器(返回容器ID)。但我不知道如何让第2步工作。 docker exec
仅适用于运行容器......
答案 0 :(得分:2)
如果我正确理解了您的问题,您只需要“run
exec
& cp
” -
例如 -
使用--name
-
docker run
的容器
$ docker run --name bang -dit alpine
使用exec
-
$ docker exec -it bang sh -c "ls -l"
使用docker cp
-
$ docker cp bang:/etc/hosts ./
使用docker stop
-
$ docker stop bang
答案 1 :(得分:1)
您真正需要的只是Dockerfile
,然后从中构建图像并使用新构建的图像运行容器。有关更多信息,请参阅
this
A"标准" dockerfile的内容可能如下所示:
#Download base image ubuntu 16.04
FROM ubuntu:16.04
# Update Ubuntu Software repository
RUN apt-get update
# Install nginx, php-fpm and supervisord from ubuntu repository
RUN apt-get install -y nginx php7.0-fpm supervisor && \
rm -rf /var/lib/apt/lists/*
#Define the ENV variable
ENV nginx_vhost /etc/nginx/sites-available/default
ENV php_conf /etc/php/7.0/fpm/php.ini
ENV nginx_conf /etc/nginx/nginx.conf
ENV supervisor_conf /etc/supervisor/supervisord.conf
#Copy supervisor configuration
COPY supervisord.conf ${supervisor_conf}
# Configure Services and Port
COPY start.sh /start.sh
CMD ["./start.sh"]
EXPOSE 80 443