1.DockerFile概述

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
官网:https://docs.docker.com/engine/reference/builder/

构建三步骤
编写Dockerfile文件
docker build命令构建镜像
docker run依镜像运行容器实例

2.DockerFile常用保留字指令

  • FROM 基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from
  • MAINTAINER 镜像维护者的姓名和邮箱地址
  • RUN 容器构建时需要运行的命令,两种格式(shell格式、exec格式)
  • EXPOSE 当前容器对外暴露出的端口
  • WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
  • USER 指定该镜像以什么样的用户去执行,如果都不指定,默认是root
  • ENV 用来在构建镜像过程中设置环境变量
  • ADD 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
  • COPY 类似ADD,拷贝文件和目录到镜像中。
  • VOLUME 容器数据卷,用于数据保存和持久化工作
  • CMD 指定容器启动后的要干的事情
  • \# 注释的意思

注意:Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换

BUILDBOTHRUN
FROMWORKDIRCMD
MAINTAINERUSERENV
COPY EXPOSE
ADD VOLUME
RUN ENTRYPOINT
ONBUILD
.dockerignore

3.自定义镜像案例

自定义镜像mycentosjava8
要求:Centos7镜像具备vim+ifconfig+jdk8
JDK的下载镜像地址
官网下载地址:
https://www.oracle.com/java/technologies/downloads/#java8

先拉取centos7.9镜像,默认centos:latest的yum源不能用。因为centos8已停止维护。

docker pull centos:centos7.9.2009
mkdir ~/myfile && cd ~/myfile

准备编写Dockerfile文件,大写字母D

FROM centos:centos7.9.2009
MAINTAINER https://www.shnne.com

ENV MYPATH /usr/local
WORKDIR $MYPATH

#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80

CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

构建docker build -t 新镜像名字:TAG .

docker build -t centosjava8:1.1 .

注意,上面TAG后面有个空格,有个点

运行 docker run -it 新镜像名字:TAG

docker run -it centosjava8:1.1 /bin/bash

4.虚悬镜像

仓库名、标签都是的镜像,俗称dangling image

Dockerfile写一个

vim Dockerfile
from ubuntu
CMD echo 'action is success'
docker build .

查看

docker image ls -f dangling=true

删除

docker image prune

5.自定义镜像myubuntu

准备编写DockerFile文件

FROM ubuntu
MAINTAINER https://www.shnne.com

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN apt-get update
RUN apt-get install net-tools
#RUN apt-get install -y iproute2
#RUN apt-get install -y inetutils-ping

EXPOSE 80

CMD echo $MYPATH
CMD echo "install inconfig cmd into ubuntu success--------------ok"
CMD /bin/bash

构建
docker build -t 新镜像名字:TAG .

docker build -t myubuntu:1.1 .

运行
docker run -it 新镜像名字:TAG

docker run -it myubuntu:1.1