Docker File简介
dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像,另外,使用Dockerfile去构建镜像就好比使用pom去构建maven项目一样,有异曲同工之妙。
dockerfile的基本结构
Dockerfile有一行行命令组成,并且支持以#开头的注释行,一般而言,Dockerfile主题内容分为四部分:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
部 分 | 命 令 |
基础镜像信息 | FROM |
维护者信息 | MAINTAINER |
镜像操作指令 | RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等 |
容器启动时执行指令 | CMD、ENTRYPOINT |
Docker 制作jdk镜像
- 启动虚拟机,进入centos
- 创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
# 指定镜像的工作区间
#创建镜像目录
mkdir –p /javaxl_docker/jdk
#上传文件jdk
*编写 Dockerfile 文件 touch Dockerfile*
#1.指定基础镜像,并且必须是第一条指令
FROM centos
#2.指明该镜像的作者和其电子邮件
MAINTAINER zs "zs@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /javaxl_docker/jdk
#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u221-linux-x64.tar.gz /javaxl_docker/jdk/
#5.配置环境变量
ENV JAVA_HOME=/javaxl_docker/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
#CMD ["java","-version"]
执行Dockersfile文件,初次依赖镜像的时候会下载相应的镜像
docker build -t jdk8:v1.0 .
# 查询镜像
docker images
# 运行镜像
docker run -di --name jdk023 容器id或容器名
docker run -it --name jdk02 容器id或容器名
# 进入
#.检查是否有问题
javac
小结
[root@localhost /]# mkdir -p /javaxl_docker/jdk
[root@localhost /]# cd /javaxl_docker/jdk
[root@localhost jdk]# rmdir Dockerfile
[root@localhost jdk]# vi Dockerfile
#1.指定基础镜像,并且必须是第一条指令
FROM centos:7
#2.指明该镜像的作者和其电子邮件
MAINTAINER zs "zs@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /javaxl_docker/jdk
#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的>是相对路径
ADD jdk-8u221-linux-x64.tar.gz /javaxl_docker/jdk/
#5.配置环境变量
ENV JAVA_HOME=/javaxl_docker/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
#CMD ["java","-version"]
~
~
~
~
~
~
~
~
~
~
"Dockerfile" 19L, 721C written
[root@localhost jdk]#
#安装lrzsz命令
yum install lrzsz -y
#选择jdk文件进行上传
rz
[root@localhost jdk]# docker build -t jdk8:v1.0 .
Sending build context to Docker daemon 195.1MB
Step 1/7 : FROM centos
---> 300e315adb2f
Step 2/7 : MAINTAINER zs "zs@qq.com"
---> Running in 1d59d057a50d
Removing intermediate container 1d59d057a50d
---> ec966a964846
Step 3/7 : WORKDIR /javaxl_docker/jdk
---> Running in ac1e2db37ce1
Removing intermediate container ac1e2db37ce1
---> 5860f07323b7
Step 4/7 : ADD jdk-8u221-linux-x64.tar.gz /javaxl_docker/jdk/
---> b019d8dff0f9
Step 5/7 : ENV JAVA_HOME=/javaxl_docker/jdk/jdk1.8.0_221
---> Running in a2529f4de3f6
Removing intermediate container a2529f4de3f6
---> ff17a50d1b3c
Step 6/7 : ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Running in e8aaa053550d
Removing intermediate container e8aaa053550d
---> 1ddaa8414142
Step 7/7 : ENV PATH=$JAVA_HOME/bin:$PATH
---> Running in 329117102c83
Removing intermediate container 329117102c83
---> 53b6a5848471
Successfully built 53b6a5848471
Successfully tagged jdk8
[root@localhost jdk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk8 v1.0 53b6a5848471 57 seconds ago 616MB
tomcat 9.0 feba8d001e3f 2 weeks ago 649MB
nginx latest ae2feff98a0c 2 weeks ago 133MB
centos latest 300e315adb2f 3 weeks ago 209MB
portainer/portainer latest 62771b0b9b09 5 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 9 months ago 791MB
[root@localhost jdk]# docker run -it --name jdk03 53b6a5848471
[root@7b42c26f5e43 jdk]#