这是我的 Dockerfile
# This Dockerfile describes the standard way to build
FROM centos:latest
MAINTAINER praveen
# Run a root to allow "rpm"
USER root
WORKDIR /root/
# Get the ACE-TAO rpm from seachange repo
COPY TAO-1.7.7-0.x86_64.rpm /root/TAO-1.7.7-0.x86_64.rpm
# Insatall the rpm
RUN rpm -ivh /root/TAO-1.7.7-0.x86_64.rpm
#Start the TAO service
#CMD /etc/init.d/tao start
COPY namingServiceConfig.sh /
RUN /namingServiceConfig.sh
EXPOSE 13021
EXPOSE 13022
EXPOSE 13023
ENV NS_PORTS=13021,13022,13023
#ENTRYPOINT /etc/init.d/tao start && bash
在进行docker构建时
无论是执行Shell脚本并将更改反射(reflect)为零件图像,还是使用运行图像时,docker运行都会反射(reflect)对容器级别的更改
就我而言,我怀疑它是在docker build和docker同时运行的同时执行的
我正在使用以下命令作为通过流浪文件构建和运行的一部分
d.build_image "/vagrant/tao", args: " -t tao/basic"
d.run "tao/basic:latest",
args: " -t -d"\
" --name tao-basic"\
" -p 13021:13021"\
" -e NS_PORT=13025,13026,13027"
让我知道,需要更多信息
最佳答案
Dockerfile指令(例如RUN
等...)在构建时(docker build -t something .
等...)进行操作。在运行时(启动容器时)仅发生CMD
和ENTRYPOINT
指令。
在您的示例中,shell脚本将作为构建的一部分运行,无论发生什么更改,都将被提交为镜像中的新层。
关于shell - 如果我们运行具有.sh文件的dockerfile,则 “docker build”和 “docker run”之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825707/