Dockerfile的基本结构
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用 -f 标志指向文件系统中任何位置的Dockerfile。
Dockerfile由一行行命令语句组成,并且支持以#开头的注释行
Dockerfile分为四部分:基础镜像信息、维护者信息、 镜像操作指令和容器启动时执行指令
Dockerfile文件说明
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声
明以 # 字符开头则被视为注释。可以在Docker文件中使用 RUN , CMD , FROM , EXPOSE , ENV 等指令。
DockerFile常见命令
build命令
docker build 命令用于使用 Dockerfile 创建镜像
语法
docker build [OPTIONS] PATH | URL | -
常用参数
—build-arg=[] :设置镜像创建时的变量;
-f :指定要使用的Dockerfile路径;
—rm :设置镜像成功后删除中间容器;
—tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
基础知识
DockerFile大致流程
- docker 从基础镜像运行一个容器
- 执行一条指令并对容器做出修改
- 执行类似 docker commit 的操作提交一个新的镜像层
- docker 再基于刚提交的镜像运行一个新容器
- 执行dockerfile 中的下一条执行直到所有的指令都执行完成
总结
从应用软件的角度来看,DockerFile、Docker镜像和Docker容器分别代表软件的三个不同阶段
- DockerFile 是软件的原材料
- Docker镜像是软件的交付品
- Docker 容器可以认为是软件的运行 状态
DockerFile 面向开发,Docker镜像成为交付标准,Docker容器则设计部署与运维,三者缺一不可,合力充当Docker体系的基石。
实战
创建 Dockerfile文件
FROM openjdk:8-alpine3.9#作者信息MAINTAINER Docker SpringBoot "zbc"#修改源RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && \echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories# 安装需要的软件,解决时区问题RUN apk --update add curl bash tzdata && rm -rf /var/cache/apk/*#修改镜像为东八区时间ENV TZ Asia/Shanghai#修改jar包名称ARG JAR_FILECOPY ${JAR_FILE} app.jarEXPOSE 8082ENTRYPOINT ["java","-jar","/app.jar"]
根据Dockerfile创建镜像
docker build -f dockerfile文件地址 -t 镜像名称:版本号 .
docker > build -t eureka:1.01> —build-arg JAR_FILE=dockerdemo.jar .
运行镜像
以守护进程方式运行 docker run -d -p 8099:8099 eureka:1.01
docker image控制启动参数
方法一
java -jar your_jar_name.jar —spring.profiles.active=prod
FROM java:8
MAINTAINER *********@gmail.com
ADD your_jar_name.jar app.jar # 把jar包打入镜像中,并改名为app.jar
EXPOSE 8090 # 镜像启动成为容器后,对外暴露的端口
# Image创建容器时的初始化内存,最大内存,及启动时使用的profile. -c为清除以前启动的数据
ENTRYPOINT ["java","-Xms1024m","-Xmx1024m","-jar","/app.jar","--spring.profiles.active=prd","-c"]
方法二
docker run -e JAVA_OPTS=’-Xms128m -Xmx256m -Dspring.profiles.active=prod’ -it pumelo/test-1.0.0 /bin/bash
