Docker生成镜像的两种方式

本文介绍了通过docker commit和docker build两种方式来创建自定义Docker镜像。首先,使用docker commit更新镜像是在现有容器基础上进行修改,然后提交为新镜像。其次,通过编写Dockerfile并执行docker build命令,可以自动化构建镜像,该方法更加灵活。Dockerfile中包含了构建镜像所需的所有指令,如FROM、COPY、EXPOSE、CMD和ENTRYPOINT等,方便管理和复用。
摘要由CSDN通过智能技术生成

有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像

两种方式:

更新镜像:使用docker commit命令
构建镜像:使用docker build命令,需要创建Dockerfile文件
更新镜像
先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用docker commit命令提交为一个新的镜像(以tomcat为例)。

1.根据基础镜像,创建容器

docker run --name mytomcat -p 80:8080 -d tomcat
2.修改容器内容

docker exec -it mytomcat /bin/bash
cd webapps/ROOT
rm -f index.jsp
echo hello world > index.html
exit
3.提交为新镜像

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

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

指定基础镜像,本地没有会从dockerHub pull下来

FROM java:8
#作者
MAINTAINER huaan

把可执行jar包复制到基础镜像的根目录下

ADD luban.jar /luban.jar

镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效

EXPOSE 80

在镜像运行为容器后执行的命令

ENTRYPOINT [“java”,"-jar","/luban.jar"]
2.使用docker build命令构建镜像,基本语法

docker build -t huaan/mypro:v1 .

-f指定Dockerfile文件的路径

-t指定镜像名字和TAG

.指当前目录,这里实际上需要一个上下文路径

三、运行

运行自己的SpringBoot镜像

docker run --name pro -p 80:80 -d 镜像名:TAG
Dockerfile常用指令
FROM
FROM指令是最重要的一个并且必须为Dockerfile文件开篇的第一个非注释行,用于为镜像文件构建过程指定基础镜像,后续的指令运行于此基础镜像提供的运行环境

这个基础镜像可以是任何可用镜像,默认情况下docker build会从本地仓库找指定的镜像文件,如果不存在就会从Docker Hub上拉取

语法:

FROM
FROM :
FROM @

MAINTAINER(depreacted)
Dockerfile的制作者提供的本人详细信息

Dockerfile不限制MAINTAINER出现的位置,但是推荐放到FROM指令之后

语法:

语法:

MAINTAINER
name可以是任何文本信息,一般用作者名称或者邮箱

LABEL
给镜像指定各种元数据

语法:

LABEL = = =…
一个Dockerfile可以写多个LABEL,但是不推荐这么做,Dockerfile每一条指令都会生成一层镜像,如果LABEL太长可以使用\符号换行。构建的镜像会继承基础镜像的LABEL,并且会去掉重复的,但如果值不同,则后面的值会覆盖前面的值。

COPY
用于从宿主机复制文件到创建的新镜像文件

语法:

COPY …
COPY ["",…""]

:要复制的源文件或者目录,可以使用通配符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值