学习Dockerfile这一篇就够了
1.什么是Dockerfile
dockerfile是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,
另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙
2. dockerfile基本结构
基础镜像信息
FROM
指定哪种镜像为新镜像的基础镜像,比如ubuntu,centos,什么叫基础镜像呢?打个比方,如果没有Windows系统就不能装jdk,新镜像就是在centos基础上创建的。
维护者信息
MAINTAINER
指明该镜像的作者和其电子邮件
镜像操作指令
USER
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户
WORKDIR
在构建镜像时,指定镜像的工作目录
(COPY/ADD)
COPY单纯的复制
ADD复制之后还会对文件进行提取和解压等操作
EVN
配置坏境变量
EXPOSE
指定容器要暴露的端口
VOLUME
用来向基于镜像创建的容器添加数据卷
RUN
在新镜像内部要执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行
容器启动时执行指令
CMD
、比如:CMD [“java”,"-jar",“eureka-server-cluster.jar”,“spring.profiles=peer1”],我们的写的项目·最终会打成jar包,将jar的启动命令添加到CMD
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
ENTRYPOINT
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效
结论:ENTRYPOINT 不能覆盖掉执行时的参数,CMD 可以掉覆盖默认的参数
3.使用Dockerfile基于centos创建JDK8的镜像
1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
这里我使用的是WinSCP工具安装包我前面博客有提供,也可以使用安装rz插件
jdk包网盘链接
链接:https://pan.baidu.com/s/1Jad2_4INsHXDhQZWp-rgOA
提取码:o622
复制这段内容后打开百度网盘手机App,操作更方便哦
touch Dockerfile
2.编写 Dockerfile 文件
使用vi Dockerfile
进入文件
1.指定基础镜像FROM centos:latest
2.指明该镜像的作者和其电子邮件MAINTAINER zs "zs@qq.com"
,$ mkdir –p /zking/java
3.在构建镜像时,指定镜像的工作目录WORKDIR /zking/java
4.把jdk安装文件复制到镜像中ADD jdk-8u221-linux-x64.tar.gz /zking/java/
5.配置环境变量
ENV JAVA_HOME=/zking/java/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
3.执行Dockerfile文件,构建jdk8的镜像
注意 . 点 代表当前路径
docker build -t jdk8:v1.0 .
4.查看镜像
docker images
5.创建并启动容器
docker run -it -d --name tomcat02 jdk8:v1.0 /bin/bash
docker run -itd --name tomcat02 jdk8:v1.0 /bin/bash
6.进入容器
docker exec -it tomcat02 bash
7.检查是否有问题
javac 或者java-version
如有疑问,请看思维导图