如何使用DockerFile文件生成镜像
DockerFile参数含义
-
FROM:指定创建镜像的基础镜像
-
MAINTAINER:Dockerfile作者信息
-
ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)
COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径
ADD :在源文件为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 目标路径
-
ENV:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量,这个变量是全局性的在容器中可以直接打印 echo $ENVIRONMENT
-
ARG: 与 ENV 作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,构建好的镜像内不存在此环境变量
-
WORKDIR:指定工作目录。用 WORKDIR 指定的工作目录
-
RUN和CMD类似
RUN:运行Linux系统的命令使用,在 docker build时运行
CMD 在docker run 时运行,如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效,较少使用
-
ENTRYPOINT:指定运行容器启动过程执行命令
DockerFile样例
FROM jfrog.test.com.cn/dev7-docker-/java_base (公司设置的基础镜像,根据个人设置)
WORKDIR /opt/portfolio-mgt (切换到镜像容器中的指定目录中相当于cd)
COPY target/portfolio-mgt-core-*.jar app.jar (复制宿主机数据到镜像内部使用)
ENV JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -XshowSettings:vm" (设置环境变量参数)
ENV ENVIRONMENT="dev"
RUN echo "ENV is $ENVIRONMENT, JAVA_OPTS is $JAVA_OPTS $JAVA_DEBUG_OPTS"
ENTRYPOINT exec java $JAVA_OPTS -Denv=$ENVIRONMENT -jar /opt/app.jar(指定运行容器启动过程执行命令)
如何使用DockerFile生成镜像文件
1、使用docker build进行镜像的构建
将DockerFile文件和springboot项目的jar放到同一目录下直接使用:
docker build -t nginx:v3 .
nginx:v3为构建的镜像名称,一般是(镜像名称:镜像标签)
注意后边有个点,如果dockerfile和jar不在同一目录下时,需要使用-f指定dockerfile文件路径
2、在docker运行时比如上传了文件,是上传到docker容器目录里,把容器删掉后文件丢失,因此需要将docker中的文件存放目录挂载到宿主机。
docker run 时使用-v参数指定挂载目录
docker run -v (宿主机目录 :docker中的目录) 其他运行的参数接着加上就好
2021年的第一篇博客,哈哈