docker(六)--创建镜像

六、创建镜像

1.创建镜像两种方式

方式1: 更新镜像 docker commit

方式2:构建镜像 docker build

2.更新镜像

1)用法

docker commit -m="描述信息" -a=作者 容器id或者容器名 镜像名:tag

2)步骤

①根据镜像运行容器
②进入容器、修改内容
③提交为新镜像、查看镜像变更历史-docker history 镜像id
④用新镜像运行容器

3.构建镜像

1.使用Dockerfile构建镜像的步骤

1) 编写 Dockerfile文件

2) build构建镜像

docker build -f Dockerfile文件的路径 -t 镜像名:tag 命令执行的上下文

3) 基于新镜像运行容器

2.常用指令

1)FROM 指定基础镜像

FROM openjdk:8jdk

2)MAINTAINER指定作者

MAINTAINER tester

3)RUN指定镜像构建过程中要运行的命令

RUN mkdir -p /test/data

4)CMD指定容器启动时默认要运行的命令

CMD JAVA -jar gift-0.0.1-SNAPSHOT.jar
cmd在构建时并不运行,在docker run运行

dockerfile中只能写一条CMD指令,如果写了多条,只有最后一条生效

5)ENV设置环境变量

格式ENV key value

ENV CATALINA_HOME /usr/local/tomcat

6)WORKDIR 进入容器后的目录--不指定,默认就是/

目录先要创建好,RUN mkdir -p "$CATALINA_HOME"

WORKDIR $CATALINA_HOME

7)COPY 被拷贝文件要和Dockerfile在同一个目录下

COPY arthas-boot.jar /usr/skywalking/agent/

COPY arthas-packaging-3.5.1-bin.zip /usr/skywalking/agent/

8)ADD拷贝文件到容器中指定目录,压缩文件会自动解压缩

ADD apache-tomcat-9.0.19.tar.gz /usr/local/

9)EXPOSE声明暴露的端口

3.示例:

3.1 用Dockerfile实现 docker commit中示例,修改tomcat后,打一个新镜像

步骤一:编写Dockerfile文件

FROM tomcat

MAINTAINER tester

RUN echo " "> /usr/local/tomcat/webapps/ROOT/index.jsp
步骤二:

docker build -f Dockerfile -t tomcat:v3 .
步骤三:

docker run --name="tomcat3" -p 38080:8080 -d tomcat:v3

3.2基于openjdk,将gift打到镜像中

vim Dockerfile

FROM openjdk:8-jdk

COPY gift-0.0.1-SNAPSHOT.jar /

EXPOSE 8096

CMD java -jar gift-0.0.1-SNAPSHOT.jar
docker build -f Dockerfile -t gift:v2 .
docker run --name gift2 -p 28096:8096 -d 4a9edcc433e5
jmeter发请求

get

/qzcsbj/gift/order/findByOrderNumber?order_number=123456

相关推荐
镜像车间25 分钟前
我用飞牛NAS在本地建了一个rhex论坛
docker
极客先躯1 小时前
高级java每日一道面试题-2026年04月04日-实战篇[Docker]-如何排查容器存储挂载失败的问题?
java·运维·docker·容器·高级面试
宇晨T2 小时前
从零搭建企业级Web服务:Shell脚本 + LNMP + Docker 实战指南
前端·docker·容器
努力进修13 小时前
Docker+cpolar 实战:打造灵活可控的远程办公系统
运维·docker·容器
jieyucx16 小时前
Docker 入门第一阶段:建立正确认知与初体验
运维·docker·容器
jieyucx19 小时前
Docker 入门第二阶段:掌握日常命令
运维·docker·容器
有毒的教程19 小时前
Kubernetes进阶实战教程(生产落地完整版)
云原生·容器·kubernetes
鱼听禅20 小时前
Ubuntu学习笔记-安装docker容器
学习·ubuntu·docker
不会C语言的男孩21 小时前
Docker 在嵌入式设备中的常用玩法
运维·docker·容器
白日焰火121 小时前
Redis 哨兵搭建+ACL权限控制
linux·docker·kubernetes