CSDN话题挑战赛第2期
参赛话题:学习笔记
个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看
一、镜像结构
1.了解
- 镜像是分层结构,每一层称为一个Layer
Entrypoint:入口,是镜像中应用启动的命令
BaseImage层:包含基本的系统函数库、环境变量、文件系统
其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置 - 什么是Dockerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./mysql-5.7.rpm /tmp |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
- Dockerfile的第一行必须是FROM,从一个基础镜像来构建
- 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine
2.案例
- 基于Ubuntu镜像构建一个新镜像,运行一个java项目
步骤1:新建一个空文件夹docker-demo
步骤2:拷贝课前资料中的docker-demo.jar文件到docker-demo这个目录
步骤3:拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录
步骤4:拷贝课前资料提供的Dockerfile到docker-demo这个目录
步骤5:进入docker-demo
步骤6:运行命令:docker build -t javaweb:1.0 .
步骤7:创建并运行镜像javaweb:1.0
最后访问 http://虚拟机ip地址:8090/hello/count
# 创建docker-demo文件夹
mkdir docker-demo
# 将资料中的docker-demo.jar,jdk8.tar.gz,Dockerfile复制到docker-demo目录下
# 构建docker镜像,基于Dockerfile
docker build -t javaweb:1.0 .
# 创建并运行javaweb:1.0镜像
docker run --name web -p 8080:8090 -d javaweb:1.0
访问[http://虚拟机ip地址:8080/hello/count
2. 基于java:8-alpine镜像,将一个Java项目构建为镜像
实现思路如下:
①新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
②拷贝课前资料提供的docker-demo.jar到这个目录中
③编写Dockerfile文件:
a)基于java:8-alpine作为基础镜像
b)将app.jar拷贝到镜像中
c)暴露端口
d)编写入口ENTRYPOINT
④使用docker build命令构建镜像
⑤使用docker run创建容器并运行
# 在tmp目录下创建文件夹docker_java
mkdir docker_java
# 创建Dockerfile文件,并添加下面内容
touch Dockerfile
# 创建javaweb:2.0镜像
docker build -t javaweb:2.0 .
# 创建并运行javaweb:2.0容器
docker run --name web2 -p 8080:8090 -d javaweb:2.0
Dockerfile内容
FROM java:8-alpine
COPY ./docker-demo.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
访问http://虚拟机ip地址:8080/hello/count
总结:
Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
Dockerfile的第一行必须是FROM,从一个基础镜像来构建
基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine