这是我的 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 build时 无论是执行shell脚本还是将更改反映为部分图像,还是在使用 docker run 运行图像时,它都会反映容器级别的更改
就我而言,我怀疑它正在执行,而docker build和docker同时运行
我正在使用以下命令作为构建和通过vagrant文件运行的一部分
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"
让我知道,需要更多信息
答案 0 :(得分:3)
Dockerfile指令(例如RUN
等...)在 build 时间(docker build -t something .
等...)处理。只有CMD
和ENTRYPOINT
指令发生在运行时(启动容器时)。
在您的示例中,shell脚本将作为构建的一部分运行,并且发生的任何更改都将提交作为图像中的新图层。