docker commit -m="描述消息" -a="作者" 容器ID或容器名 镜像名:TAG # docker commit -m="修改了首页" -a="华安" mytomcat huaan/tomcat:v1.0

4.使用新镜像运行容器


docker run --name tom -p 8080:8080 -d huaan/tomcat:v1.0

使用Dockerfile构建镜像

什么是Dockerfile?

Dockerfile is nothing but the source code for building Docker images

  • Docker can build images automatically by reading the instructions from a Dockerfile
  • A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image
  • Using docker build users can create an automated build that executes several command-line instructions in succession


Dockerfile格式

  • Format:
    • #Comment
    • INSTRUCTION arguments


  • The instruction is not case-sensitive
    • However,convention is for them to be UPPERCASE to distinguish them from arguments more easily


  • Docker runs instructions in a Dockerfile in order
  • The first instruction must be 'FROM' in order to specify the Base Image from which you are building

使用Dockerfile构建SpringBoot应用镜像

一、准备

1.把你的springboot项目打包成可执行jar包

2.把jar包上传到Linux服务器

二、构建

1.在jar包路径下创建Dockerfile文件 vi Dockerfile


COPY ["<src>",..."<dest>"]
# <src>:要复制的源文件或者目录,可以使用通配符
# <dest>:目标路径,即正在创建的image的文件系统路径;建议<dest>使用绝对路径,否则COPY指令则以WORKDIR为其起始路径

注意:如果你的路径中有空白字符,通常会使用第二种格式

规则:

  • <src> 必须是build上下文中的路径,不能是其父目录中的文件
  • 如果 <src> 是目录,则其内部文件或子目录会被递归复制,但 <src> 目录自身不会被复制
  • 如果指定了多个 <src> ,或在 <src> 中使用了通配符,则 <dest> 必须是一个目录,则必须以/符号结尾
  • 如果 <dest> 不存在,将会被自动创建,包括其父目录路径

ADD

基本用法和COPY指令一样,ADD支持使用TAR文件和URL路径

语法:


ENTRYPOINT<command>
ENTRYPOINT["<executable>","<param1>","<param2>"]

和CMD不同的是ENTRYPOINT启动的程序不会被docker run命令指定的参数所覆盖,而且,这些命令行参数会被当做参数传递给ENTRYPOINT指定的程序(但是,docker run命令的--entrypoint参数可以覆盖ENTRYPOINT)

docker run命令传入的参数会覆盖CMD指令的内容并且附加到ENTRYPOINT命令最后作为其参数使用

同样,Dockerfile中可以存在多个ENTRYPOINT指令,但是只有最后一个会生效

Dockerfile中如果既有CMD又有ENTRYPOINT,并且CMD是一个完整可执行命令,那么谁在最后谁生效

ONBUILD

用来在Dockerfile中定义一个触发器

语法: