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
原文地址:https://blog.shnne.com/archives/13.html