Docker学习3.0-Dockerfile自定义镜像
Dockerfile自定义镜像
1. 镜像结构
组成
- 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
结构
- 基础镜像层 Entrypoint(依赖的系统函数库、环境、配置、文件等)
- 其他层 Layer (添加安装包、依赖、配置等,每次操作都形成新的一层)
- 镜像运行入口 BaseImages(一般是程序启动的脚本和参数)
2. Dockerfile语法
Dockerfile是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像,每一个指令都会形成一层Layer。
| 指令 | 说明 | 示例 |
| FROM | 指定基础镜像 | FROM centos:6 |
|ENV| 设置环境变量 | ENV key value |
|COPY| 拷贝本地文件到镜像的指定目录 | COPY ./mysql-5.7.rpm /tem |
|RUN| 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
| EXPOSE | 指定容器运行时监听的端口,时镜像使用者看的 | EXPOSE 8080 |
| ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
3. 构建Java项目
- Java JDK
- JavaWeb
- Dockefile
- 构建镜像并启动
1 Java JDK
5. 自行下载
2 JavaWeb
# pom文件添加 finalName 指定打包名称
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3 Dockefile文件
# 指定基础镜像
FROM centos:centos7
# 配置环境变量,JDK的安装目录 一般安装在此目录
ENV JAVA_DIR=/usr/load
# 拷贝jdk和java项目包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./demo.jar /home/youwhua/javaweb/docker01/docker-demo.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量,JDK的安装目录
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口 与Java代码中保持一致
EXPOSE 8080
# 入口,Java项目的启动命令
ENTRYPOINT java -jar /home/youwhua/javaweb/docker01/docker-demo.jar
4 构建镜像并启动
# 构建 -t 镜像名 . Dockefile所在的目录
docker build -t docker01:1.0 .
# 启动 容器名 镜像名
docker run --name docker01 -p 8081:8080 -d docker01:1.0
最后
以上是学习 黑马程序员《微服务技术全栈教程》的学习笔记