Docker生成镜像

docker commit:

提交为新镜像:

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

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

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"]
使用 docker build 命令构建镜像,基本语法

docker build -t huaan/mypro:v1 .
# -f指定Dockerfile文件的路径
# -t指定镜像名字和TAG
# .指当前目录,这里实际上需要一个上下文路径
三、运行
运行自己的SpringBoot镜像

docker run --name pro -p 80:80 -d 镜像名:TAG

实例: 

使用Dockerfile构建Docker镜像
Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节
先来编写一个最简单的Dockerfile,以前文下载的Nginx镜像为例,来编写一个Dockerfile修改该Nginx镜像的首页


1、新建一个空文件夹docker-demo,在里面再新建文件夹app,在app目录下新建一个名为Dockerfile的文件,在里面增加如下内容: FROM nginx RUN echo '<h1>This is Tuling Nginx!!!</h1>' > /usr/share/nginx/html/index.html 该Dockerfile非常简单,其中的 FROM、 RUN都是 Dockerfile的指令。 FROM指令用于指定基础镜像, RUN指令用于执行命令。

2、在Dockerfile所在路径执行以下命令构建镜像: docker build -t nginx:tuling . 其中,-t指定镜像名字,命令最后的点(.)表示Dockerfile文件所在路径

3、执行以下命令,即可使用该镜像启动一个 Docker容器 docker run -d -p 92:80 nginx:tuling

4、访问 http://Docker宿主机IP:92/,可看到下图所示界面

 

使用Dockerfile构建微服务镜像
以项目05-ms-eureka-server为例,将该微服务的可运行jar包构建成docker镜像
1、将jar包上传linux服务器/usr/local/docker-app/docker-demo/app/eureka目录,在jar包所在目录创建名为Dockerfile的文件
2、在Dockerfile中添加以下内容

# 基于哪个镜像
From java:8
# 复制文件到容器
ADD microservice-eureka-server-0.0.1-SNAPSHOT.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8761
# 配置容器启动后执行的命令
ENTRYPOINT java ${JAVA_OPTS} -jar /app.jar
3、使用docker build命令构建镜像
docker build -t microservice-eureka-server:0.0.1 .

# 格式: docker  build  -t  镜像名称:标签  Dockerfile的相对位置
在这里,使用-t选项指定了镜像的标签。执行该命令后,终端将会输出如下的内容

4、启动镜像,加-d可在后台启动

docker run -d -p 8761:8761 microservice-eureka-server:0.0.1
使用 -v 可以挂载一个主机上的目录到容器的目录    
docker run -d -p 8761:8761 -v /log:/container-log microservice-eureka-server:0.0.1

加上JVM参数:
# --cap-add=SYS_PTRACE 这个参数是让docker能支持在容器里能执行jdk自带类似jinfo,jmap这些命令,如果不需要在容器里执行这些命令可以不加
docker run -e JAVA_OPTS='-Xms1028M -Xmx1028M -Xmn512M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M' --cap-add=SYS_PTRACE -d -p 8761:8761
microservice-eureka-server:0.0.1
5、访问http://Docker宿主机IP:8761/,可正常显示Eureka Server首页

 

posted @ 2022-06-26 22:52  VNone  阅读(330)  评论(0编辑  收藏  举报