05Dockerfile

本文主要介绍下Dockerfile的基本用法和写法

  1. 自定义镜像

Dockerfile,就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像

|------------|---------------------------------------------------------------------------|--------------------------------------------------------------------|
| 指令 | 说明 | 示例 |
| FROM | 指定基础镜像 | FROM centos:7 |
| MAINTAINER | 维护者信息 | MAINTAINER docker_user maoge |
| ENV | 设置环境变量,可在后面指令使用 | ENV key value |
| ADD | 复制指定的src到容器的dest,src可以是Dockerfile所在目录的一个相对路径,也可以是一个url,又可以是tar文件(自动解压为目录) | ADD ./test.tar /test |
| COPY | 拷贝本地文件到镜像的指定目录 | COPY ./jre11.tar.gz /tmp |
| VOLUME | 创建一个可以从本地或从其他容器挂载的挂载点 | VOLUM "[/data"] |
| USER | 指定容器运行时的用户名或者UID | USER daemon |
| WORKDIR | 为后续RUN、CMD、ENTRYPOINT指令配置工作目录 | WORKDIR /path/to/workdir |
| ONBUILD | 配置当所创建的镜像作为其他镜像基础镜像时,所执行的操作命令 | [...] ONBUILD ADD . /app/src |
| RUN | 执行linux的shell命令,一般是安装过程的命令 | RUN tar -xzvf /tmp/jre11.tar.gz && EXPORTS path=/tmp/jre11:$path |
| EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
| ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xxx.jar |

2、案例1

==============

指定基础镜像

FROM centos:7

#维护者信息

MAINTAINER docker_user maoge

配置环境变量,jdk的安装目录

ENV TZ=Aisa/Shanghai

ENV JAVA_DIR=/usr/local

拷贝jdk和java项目的包

COPY ./jdk8.tar.gz $JAVA_DIR

COPY ./docker-demo.jar /tmp/app.jar

安装jdk

RUN cd $JAVA_DIR \ && tar -xf ./jdk8.tar.gz && mv ./jdk1.8.0_144 ./java8

配置环境变量

ENV JAVA_HOME=$JAVA_DIR/java8

ENV PATH=PATH:JAVA_HOME/bin

入口,java项目的启动命令

ENTRYPOINT ["java","-jar","/app.jar"]

注意:可以写在一行的RUN 尽量写在一行,可以压缩层,减小体量

3、案例2

=============

基础镜像

FROM

设置时区,拷贝java包

ENV TZ=Aisa/Shanghai

COPY ./docker-demo.jar /tmp/app.jar

入口,java项目的启动命令

ENTRYPOINT ["java","-jar","/app.jar"]

4、构建

编写好Dockerfile,可以用下面命令来构建镜像

docker build -t myImage:1.0 .

-t 给镜像起名,格式repository:tag ,不指定tag默认为latest

. : 是指定Dockerfile所在目录,如果就在当前目录,则指定为"."

docker build -t docker-demo . (默认会找当前目录的dockerfile)

相关推荐
撸码到无法自拔32 分钟前
docker常见命令
java·spring cloud·docker·容器·eureka
hi,编程哥5 小时前
Docker、ECS 与 K8s 网段冲突:解决跨服务通信中的路由问题
docker·容器·kubernetes
How_doyou_do5 小时前
项目全栈实战-基于智能体、工作流、API模块化Docker集成的创业分析平台
运维·docker·容器
xbd_zc10 小时前
【Jenkins简单自动化部署案例:基于Docker和Harbor的自动化部署流程记录】
docker·自动化·jenkins·harbor
我的璨宝宝啊11 小时前
linux小主机搭建自己的nas(三)docker安装nextcloud
linux·运维·docker
大米☋11 小时前
GitLab搭建与使用(SSH和Docker)两种方式
docker·ssh·gitlab
污斑兔12 小时前
在Mac环境下搭建Docker环境的全攻略
docker
modest —YBW13 小时前
Ollama+OpenWebUI+docker完整版部署,附带软件下载链接,配置+中文汉化+docker源,适合内网部署,可以局域网使用
人工智能·windows·docker·语言模型·llama
心动啊12114 小时前
docker使用过程中遇到概念问题
运维·docker·容器
Penguido14 小时前
基于 Nexus 在 Dockerfile 配置 yum, conda, pip 仓库的方法和参考
linux·docker·centos·conda·pip