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 给镜像加一个Tag
  • ImageName 给镜像起的名称
  • 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

results matching ""

    No results matching ""