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中定义一个触发器
语法: