我是Docker
的新用户,我在编写Dockerfile
时遇到问题。问题是我创建了一个名为jonas523
的用户,我想执行一个shell命令。所以我把它放在这个Dockerfile
中,当我进入我的新容器时,我发现该命令没有与我创建的新用户一起使用。
我认为我不理解USER
提供的Docker
说明:
USER jonas523
RUN \
echo "JAVA_HOME=/usr/java/jdk1.7.0_45/bin" >> /home/jonas523/.bash_profile \
&& echo "ANT_HOME=/opt/apache-ant-1.8.2/bin" >> /home/jonas523/.bash_profile \
&& echo "export JAVA_HOME" >> /home/jonas523/.bash_profile \
&& echo "export ANT_HOME" >> /home/jonas523/.bash_profile \
&& echo "PATH=$PATH:$HOME/bin:$JAVA_HOME:$ANT_HOME" >> /home/jonas523/.bash_profile \
&& echo "export PATH" >> /home/jonas523/.bash_profile
RUN source ~/.bash_profile
有人可以告诉我使用USER
指令。 RUN
和CMD
说明之间有什么区别?
感谢。
答案 0 :(得分:4)
来自docs:
但是,它并没有创建用户。您需要已经完成此操作(例如,使用较早的USER指令设置运行映像时使用的用户名或UID以及任何后续RUN指令。
RUN
指令。)
" RUN"有什么区别?和" CMD"说明?
RUN
用于逐步"分层"例如,一个docker镜像安装必要的依赖项(例如RUN apt-get install ....
)。您可以在Dockerfile中拥有大量RUN
指令,并且在构建映像时它们都会被执行(为简单起见,忽略构建缓存)。
CMD
指令不会在docker build ...
期间执行,而是指定您希望容器在docker run ...
执行的命令。您只能在一个CMD
指令中执行Dockerfile。