Dcoker之Dockerfile

Docker File简介

dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像,另外,使用Dockerfile去构建镜像就好比使用pom去构建maven项目一样,有异曲同工之妙。

dockerfile的基本结构

Dockerfile有一行行命令组成,并且支持以#开头的注释行,一般而言,Dockerfile主题内容分为四部分:

  1. 基础镜像信息
  2. 维护者信息
  3. 镜像操作指令
  4. 容器启动时执行指令
部 分命 令
基础镜像信息FROM
维护者信息MAINTAINER
镜像操作指令RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令CMD、ENTRYPOINT

Docker 制作jdk镜像

  1. 启动虚拟机,进入centos
  2. 创建文件夹上传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]# 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值