dockerfile 的问题

1、请这行RUN bash -c 'touch /app.jar’命令的意思和作用是什么?
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar 
#add命令把jar复制过去,

RUN bash -c 'touch /app.jar'    

touch命令的作用是修改这个文件的访问时间和修改时间为当前时间。

2、Djava.security.egd=file:/dev/./urandom是什么作用?
例子:
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
解释:
java.security.SecureRandom源码分析 
java.security.egd=file:/dev/./urandom
SecureRandom在java各种组件中使用广泛,可以可靠的产生随机数。
但在大量产生随机数的场景下,性能会较低。

这时可以使用"-Djava.security.egd=file:/dev/./urandom"
加快随机数产生过程。

3、VOLUME /tmp 是什么作用?
作用:用于指定持久化目录

VOLUME /tmp
1
VOLUME 指定了临时文件目录为/tmp。
其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。
此步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,
因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

格式:

VOLUME ["/path/to/dir"]
示例:

VOLUME ["/data"]
VOLUME ["/var/www", “/var/log/apache2”, “/etc/apache2”]
注:一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:

卷可以容器间共享和重用
容器并不一定要和其它容器共享卷
修改卷后会立即生效
对卷的修改不会对镜像产生影响
卷会一直存在,直到没有任何容器在使用它
4、Dockerfile如何复制保留子目录结构?
试图从本地主机复制一些文件和文件夹到Docker镜像。
files的子文件夹是这样的:

folder1
    file1
    file2
folder2
    file1
    file2 

正确写法:

COPY files/ /files/

参数:https://cloud.tencent.com/developer/ask/98544

COPY : 复制命令,COPY package.json /usr/src/app/
COPY [--chown=<user>:<group>] <源路径>... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]

5、ADD : 更高级的复制文件
ADD : 更高级的复制文件, ADD 指令和 COPY 的格式和性质基本一致。
但是在 COPY 基础上增加了一些功能,比如 <源路径> 可以是一个 URL,这种情况下,Docker 引擎会试图去下载这个链接的文件放到 <目标路径> 去;
如果 <源路径> 为一个 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,ADD 指令将会自动解压缩这个压缩文件到 <目标路径> 去。
这些是COPY指令不能做到的。
例子:

#ADD 添加本地文件到镜像
ADD pcre-8.37.tar.gz /usr/local/src
ADD nginx-1.9.3.tar.gz /usr/local/src

6、RUN:指令是用来执行命令行命令的
RUN:指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。
RUN <command> : RUN echo 'Hello, Docker!' 
/usr/share/nginx/html/index.html
RUN ["executable", "param1", "param2"] : RUN ["/bin/bash", "-c", "echo hello"]

例子:

#RUN 在镜像中执行命令
RUN yum install -y wget gcc_c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www
RUN yum install -y gcc gcc-c++
RUN ./configure --prefix=/usr/local/nginx \
--user=www --group=www --with-http_ssl_module \
--with-http_stub_status_module \
--with-pcre=/usr/local/src/pcre-8.37 && make && make install
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf

7、WORKDIR 指定工作目录
WORKDIR 指定工作目录,使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),
以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。
WORKDIR <工作目录路径>

相当于 cd

例子:

#WORKDIR 镜像中切换到目录
WORKDIR /usr/local/src/nginx-1.9.3

8、ENV 设置环境变量
ENV 设置环境变量,格式有两种

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...

例子:

#配置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
————————————————
版权声明:本文为CSDN博主「ronmy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ronmy/article/details/102616067

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值