文章目录
生成docker镜像的两种方式
1. 基础镜像更新生长新镜像
先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用 docker commit 命令提交为一个
新的镜像(以tomcat为例)
1.1 根据基础镜像,创建容器
docker run --name mytomcat -p 80:8080 -d tomcat
1.2 修改容器内容
# 进入容器
docker exec -it mytomcat /bin/bash
# 修改内容
cd webapps/ROOT
rm -f index.jsp
echo hello world > index.html
# 退出
exit
1.3 提交为新镜像
docker commit -m="描述消息" -a="作者" 容器ID或容器名 镜像名:TAG
# docker commit -m="修改了首页" -a="lindsey" mytomcat lindsey/tomcat:v1.0
# TAG 不指定默认为latest
1.4 使用新镜像运行容器
docker run --name tom -p 8080:8080 -d lindsey/tomcat:v1.0
2. Dockerfile构建新镜像
2.1 构建指令
docker build -f /path/to/a/Dockerfile
2.2 Dockerfile文档结构
Dockerfile 一般分为四部分:
基础镜像信息
维护者信息
镜像操作指令和容器启动时执行指令
’#’ 为 Dockerfile 中的注释。
2.3 Dockerfile文件说明
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。
一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
2.3 示例
使用Dockerfile构建SpringBoot应用镜像
Dockerfile 内容:
# 指定基础镜像,本地没有会从dockerHub pull下来
FROM java:8
#作者
MAINTAINER lindsey
# 把可执行jar包复制到基础镜像的根目录下
ADD lindsey.jar /lindsey.jar
# 镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效
EXPOSE 80
# 在镜像运行为容器后执行的命令
ENTRYPOINT ["java","-jar","/lindsey.jar"]
使用 docker build 命令构建镜像:
docker build -f /data/docker/Dockerfile -t lindsey/mypro:v1.0
# -f指定Dockerfile文件的路径
# -t指定镜像名字和TAG