Dockerfile基本使用方法
DockerFile
dockerfile含义:dockerfile是用来构建docker镜像的文本文件,是有一条条构建镜像所需的指令和参数构成
dockerfile基础知识
- 每条保留字指令必须为大写字母且后面要跟随至少一个参数
- 指令按照从上到下顺序执行
- #表示注释
- 每条指令都会创建一个新的镜像层并对镜像进行提交
Dokcer执行DokcerFile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令 并对容器作出修改
- 执行类似docker commit的操作提交一个新的镜像层
- docker再基于刚提交的镜像运行一个新的容器
- 执行dockerfile中的下一条指令直到所有指令都执行完成
DockerFile常用保留字
保留字 | 含义 |
---|---|
FROM | 基础镜像,当前新镜像是基于那个镜像,指定一个已经存在的镜像作为模板,第一条必须是FROM |
MAINTAINER | 镜像维护者的姓名和邮箱地址 |
RUN | 容器构建时需要运行的命令 |
EXPOSE | 当前容器对外暴露的端口 |
WORKDIR | 指定在创建容器,终端默认登录的工作目录 |
USER | 指定该镜像以什么用户去执行,如果不指定默认就是root |
ENV | 用来在构建镜像过程中设置环境变量 |
ADD | 将宿主机下的文件拷贝到镜像,并会自动处理url和解压tar包 |
COPY | 将从构建上下文目录中的源路径或目录复制到新的镜像层的目标路径中 |
VOLUME | 容器数据卷,用于数据持久化 |
CMD | 指定容器启动之后要执行的操作 |
ENTRYPOINT | 用来指定一个容器启动时要运行的命令,类似于CMD,但是不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定的程序 |
案例
需求:自定义镜像centosjava8
要求centos镜像具备vim+ifconfig+jdk8
https://www.oracle.com/java/technologies/downloads/#license-lightbox
1.编写Dokcerfile文件
mkdir myfile
cd myfile
FROM centos:7
MAINTAINER liuyu<liuyu@>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令
RUN yum -y install net-tools
#安装jdk8
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk添加到容器中,安装包必须要和Dockerfile文件在同一个位置,
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
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
2.构建镜像
进入myfile文件目录下,执行
docker build -t centosjava8:1.5 .
构建完成
3.检查镜像
4.运行新的镜像
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)