Docker打包(java篇)
1. 安装docker环境
Docker安装可查看官网教程
2. 在java项目中添加DockerFile
在与pom文件同级的路径下,创建DockerFile文件
3. 编写DockerFile内容
根据项目需要,编辑DockerFile的内容,示例如下:
# 基于java:8镜像进行扩展
FROM java:8
# 指定制作该镜像的作者和联系方式
MAINTAINER dev
#指定docker容器时区(也可以在docker run命令时指定使用系统配置)
RUN echo "Asia/shanghai" > /etc/timezone;
# 指定容器内进程对外开放的端口
EXPOSE 8090
#设置java启动参数
ENV JAVA_OPTS '-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xmx3306m -Xms2048m -Xmn1024m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC'
#指定工作目录
WORKDIR /ms
#执行COPY(或者其他初始化的操作)
COPY target/*.jar /ms/app.jar
COPY src/main/resources/prod/* /ms/
# 指定容器启动时,需要执行的命令(运行该jar程序)
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -jar /ms/app.jar > /dev/null "]
DockerFile的详细说明可以参考docker官网教程
Tips:由于docker容器权限的原因,初始化的动作尽量放在DockerFile中执行,比如容器运行起来后创建默认文件夹等操作
4. docker build
docker build 命令用于使用 Dockerfile 创建镜像。
语法 docker build [OPTIONS] PATH | URL | -
典型用法:
docker build -t ImageName:TagName .
-t
给镜像加一个TagImageName
给镜像起的名称TagName
给镜像的Tag名.
Dockerfile所在目录(“.”表示当前目录)
使用docker images
查看刚构建的镜像
Tips:常用选项说明
- --build-arg,设置构建时的变量
- --no-cache,默认false。设置该选项,将不使用Build Cache构建镜像
- --pull,默认false。设置该选项,总是尝试pull镜像的最新版本
- --compress,默认false。设置该选项,将使用gzip压缩构建的上下文
- --disable-content-trust,默认true。设置该选项,将对镜像进行验证
- --file, -f,Dockerfile的完整路径,默认值为‘PATH/Dockerfile’
- --isolation,默认--isolation="default",即Linux命名空间;其他还有process或hyperv
- --label,为生成的镜像设置metadata
- --squash,默认false。设置该选项,将新构建出的多个层压缩为一个新层,但是将无法在多个镜像之间共享新层;设置该选项,实际上是创建了新image,同时保留原有image。
- --tag, -t,镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag
- --network,默认default。设置该选项,Set the networking mode for the RUN instructions during build
- --quiet, -q,默认false。设置该选项,Suppress the build output and print image ID on success
- --force-rm,默认false。设置该选项,总是删除掉中间环节的容器
- --rm,默认--rm=true,即整个构建过程成功后删除中间环节的容器
docker save
docker save : 将指定镜像保存成 tar 归档文件。
语法
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
- -o :输出到的文件。
实例 将镜像 demo/centOS:v1 生成 my_cenOS_v1.tar 文档
docker save -o my_cenOS_v1.tar demo/centOS:v1