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首页