Mad*_*lzz 2 unix virtualization docker
我是新来的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
Run Code Online (Sandbox Code Playgroud)
谁能告诉我有关USER指令的使用。RUN和CMD指令有什么区别?
谢谢。
从文档:
USER指令设置在运行映像以及以下任何RUN指令时使用的用户名或UID。
但是,它不会创建用户。您需要已经完成此操作(例如,使用更早的RUN说明)。
“ RUN”和“ CMD”指令之间有什么区别?
RUN用于逐步“分层” Docker镜像以安装必要的依赖项(例如RUN apt-get install ....)。您可以RUN在Dockerfile中有许多指令,并且它们在构建映像时都会执行(为简单起见,忽略构建缓存)。
CMD指令不会在期间执行docker build ...,而是指定您希望容器在上执行的命令。Dockerfile中docker run ...只能有CMD一条指令。