Dockerfile
1、Dockerfile内容基础知识
- 每条保留字指令必须为大写字母,且后面跟随至少一个参数
- 指令按照从上到下顺序执行
- #表示注释
- 每条指令都会创建一个新的镜像层并对镜像层进行提交
2、docker执行Dockerfile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令并对容器进行修改
- 执行类似docker commit的操作提交一个新的镜像层
- docker再基于刚提交的镜像运行一个新容器
- 执行Dockerfile中的下一条指令直到所有指令执行完成
3、Dockerfile常用保留字指令
- FROM
- 基础镜像,当前镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是FROM
- MAINTAINER
- RUN
- 构建容器时需要运行的命令
- 两种格式
- RUN是在docker build时运行
- EXPOSE
- WORKDIR
- 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
- USER
- 指定该镜像以什么样的用户去执行,如果都不指定,默认是root
- ENV
- ADD
- 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar包
- COPY
- 类似ADD,拷贝文件和目录到镜像中
- 将从构建上下文目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置
- COPY src dest
- COPY ["src","dest"]
- <src源路径>:源文件或者源目录
- <dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建
- VOLUME
- CMD
- 指定容器启动后要干的事
- 注意
- Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
- 参考官网Tomcat的Dockerfile演示讲解
- 他和前面RUN命令的区别
- CMD是在docker run时运行
- RUN是在docker build 时运行
- ENTRYPOINT
- 也是用于指定一个容器启动时要运行的命令
- 类似于CMD指令,但是ENTRYPOINT不会被docker run后面的指令覆盖,而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定的程序
4、编写一个具备vim+ifconfig+jdk8的Centos7镜像
- 去官网下载jdk-8u351-linux-x64.tar.gz
- 将下载的jdk-8u351-linux-x64.tar.gz传到自己创建的/myfile文件夹中
- vi Dockerfile
- FROM centos:7.6.1810
MAINTAINER zzyy<zzyybs@126.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-8u351-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u351-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_351
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 - 注意:由于最新版centos的什么vim还是啥的源路径改了,所以不能用FROM centos。这里用的是FROM centos:7.6.1810
- 构建
- docker build -t 新镜像名字:TAG .
- 注意TAG后面有个空格,空格后面有个点
- 运行
- 虚悬镜像
- 是什么
- 仓库名、标签都是的镜像,dangling image
- Dockerfile写一个
- mkdir test
cd test/
vi Dockerfile
FROM ubuntu
CMD echo 'action is success'
docker build .
- 查看
- docker image ls -f dangling=true
- 命令结果

- 删除
- docker image prune
posted @
2023-01-04 14:55
枫叶红时
阅读(
41)
评论()
编辑
收藏
举报
点击右上角即可分享