shell - 如果我们运行具有.sh文件的dockerfile,则 “docker build”和 “docker run”之间的区别

标签 shell docker

这是我的 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 .等...)进行操作。在运行时(启动容器时)仅发生CMDENTRYPOINT指令。

在您的示例中,shell脚本将作为构建的一部分运行,无论发生什么更改,都将被提交为镜像中的新层。

关于shell - 如果我们运行具有.sh文件的dockerfile,则 “docker build”和 “docker run”之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825707/

相关文章:

docker - Dockerfile-缓存软件包以加快重建速度吗?

ruby-on-rails - 无法使用 docker 安装 gem "rmagick"

angular - 在远程服务器中 Dockerize Angular cli 应用程序

linux - 将 .txt 文件中的输入用于 if 命令 shell linux

c++ - xterm 终止后进程被杀死

linux - 如何用shell脚本读取变量中的多个值

node.js - 错误 : Cannot find "/config/config.json". 你运行 "sequelize init"了吗?

python docker如何将目录从主机挂载到容器

linux - 如何在linux中使用grep查找所有包含特定命令的文件?

ios - Shell 脚本调用错误 - Xcode 6