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 之后的参数替换
BUILD | BOTH | RUN |
---|---|---|
FROM | WORKDIR | CMD |
MAINTAINER | USER | ENV |
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.虚悬镜像
仓库名、标签都是
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