-
Dockerfile
2021-01-07 07:58:35博客内容传送门Dockerfile简介Docker制作jdk镜像 传送门 Docker入门 Docker数据卷 Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像。另外,使用Dockerfile去... -
dockerFile
2020-06-07 16:56:42 -
DockerFIle
2020-12-25 14:12:13DockerFIle 是什么? DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 构建三步骤: 编写DockerFile文件 docker build docker run Centos Dockerfile文件案例: FROM scratch ADD...DockerFIle
是什么?
DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
构建三步骤:
编写DockerFile文件 docker build docker run
Centos Dockerfile文件案例:
FROM scratch ADD centos-7-x86_64-docker.tar.xz / LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="CentOS Base Image" \ org.label-schema.vendor="CentOS" \ org.label-schema.license="GPLv2" \ org.label-schema.build-date="20201113" \ org.opencontainers.image.title="CentOS Base Image" \ org.opencontainers.image.vendor="CentOS" \ org.opencontainers.image.licenses="GPL-2.0-only" \ org.opencontainers.image.created="2020-11-13 00:00:00+00:00" CMD ["/bin/bash"]
DockerFile文件过程解析
-
Dockerfile内容基础知识
-
每条保留字指令都必须为大写字母且后面要跟随至少一个参数
-
指令按照从上到下 顺序执行
-
#表示注释
-
每条指令都会创建一个新的镜像层,并对镜像进行提交
-
-
Docker执行DockerFile的大致流程
-
docker从基础镜像运行一个容器
-
执行一条指令并对容器做出修改
-
执行类似docker commit的操作提交一个新的镜像层
-
docker再基于刚提交的镜像运行一个新容器
-
执行dockerfile中的下一条指令直到所有指令都执行完成
-
-
总结:
-
从应用软件角度来看,Dockerfile Docker镜像 Docker容器 分别代表软件的三个不同阶段
-
DockerFile 是软件的原材料
-
Docker镜像是软件的交付品
-
Docker容器则可以认为是软件的运行态
-
DockerFile 面向开发 Docker镜像成为交付标准 Docker容器则涉及部署与运维 三者不可缺一,合力充当Docker体系的基石
-
DockerFile体系结构
- FROM 基础镜像 当前新镜像是基于哪个镜像的 - MAINTAINER 镜像维护者的姓名和邮箱地址 - RUN 容器构建时需要运行的命令 - EXPOSE 当前容器对外暴露出的端口 - WORKDIR 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点 - ENV 用来在构建镜像过程中设置环境变量 - ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 - COPY 类似ADD 拷贝文件和目录到镜像中 将从构建上下文目录中<源路径> 的文件/目录复制到新的一层的镜像内的<目标路径>位置 - VOLUME 容器数据卷 用于数据保存和持久化工作 - CMD 指定一个容器启动时要运行的命令 Dockerfile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run 之后的参数替换。 - ENTRYPOINT 指定一个容器启动时要运行的命令 ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数 - ONBUILD 当构建一个被继承的 Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
-
-
dockerfile
2015-04-09 09:55:49 -
DockerFile
2021-01-02 13:52:04DockerFile前言DockerFileDockerfile的基本结构基础镜像信息指定基础镜像维护者信息镜像操作指令总结 前言 今天为大家分享的是Docker中DockerFile的基本使用相关知识点~ DockerFile DockerFile是一个文本格式的...DockerFile
前言
今天为大家分享的是Docker中DockerFile的基本使用相关知识点~
DockerFile
DockerFile是一个
文本格式的配置文件
, 用户可以使用 Dockerfile 来快速创建自定义的镜像
Dockerfile的基本结构
基础镜像信息
FROM 指定哪种镜像为新镜像的基础镜像,比如ubuntu,centos
指定基础镜像
FROM centos:latest
并且必须是第一条指令
维护者信息
MAINTAINER 指明该镜像的作者和其电子邮件
例如:MAINTAINER xxx “xxx@xxx.com”
镜像操作指令
USER
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户WORKDIR
在构建镜像时,指定镜像的工作目录
WORKDIR /usr/local/java默认为/(COPY/ADD)
COPY单纯的复制
ADD复制之后还会对文件进行提取和解压等操作
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/EVN
配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_221
ENV CLASSPATH=.:JAVA_HOME/lib/tools.jar
ENV PATH=PATHEXPOSE
指定容器要暴露的端口VOLUME
用来向基于镜像创建的容器添加数据卷RUN
在新镜像内部要执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行容器启动时执行指令
CMD、
比如:CMD [“java”,"-jar",“eureka-server-cluster.jar”,“spring.profiles=peer1”]
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。ENTRYPOINT
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效结论 ENTRYPOINT 不能覆盖掉执行时的参数,CMD 可以掉覆盖默认的参数
使用Dockerfile基于centos创建JDK8的镜像
0、启动虚拟机,进入centos
1、创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
mkdir dockerfile
2、进入该文件夹cd dockerfile
3、通过rz上传jdk压缩包
此时ls一下,就可以看到已经成功上传的jdk压缩包了!
3、此时新建一个jdk的目录 再次上传jdk的压缩包
4、在jdk目录下编写Dockerfile文件
touch dockerfile
ls
5、使用vi dockerfile
进入自定义的dockerfile文件vi Dockerfile
编写的dockerfile文件中的内容#1.指定基础镜像,并且必须是第一条指令 FROM centos:latest #2.指明该镜像的作者和其电子邮件 MAINTAINER sunny "2403923308@qq.com" #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录 WORKDIR /usr/local/java #4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径 ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/ #5.配置环境变量 ENV JAVA_HOME=/usr/local/java/jdk1.8.0_221 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$JAVA_HOME/bin:$PATH
如图
编写后:wq
保存并退出~6、执行Dockerfile文件,构建jdk8的镜像
docker build -t jdk8:v1.0 .
.表示使用当前路径的 Dockerfile 进行构建
,-t jdk8:v1.0 给新构建的镜像取名为 jdk8, 并设定版本为 v1.0
7、查看镜像docker images
8、创建并启动容器docker run -it -d --name tomcat01 jdk8:v1.0 /bin/bash
9、进入容器
10、检查是否有问题java -version
此时可以看到jdk8的版本号,说明jdk8的自定义镜像就构建好啦~基于Alpine的镜像构建容器
1、没有指定版本,这里下载最新版本
docker pull alpine
2、查看全部镜像docker images
3、显示所有容器
docker ps -a
4、运行alpine的可执行文件docker run -itd --name alpine01 alpine:latest /bin/sh
5、再次查看所有容器
6、执行此命令
7、ls(查看linux环境下的容器)ls
8、退出exit
总结
Docker中的一部分配置文件的使用都是基于在Linux的学习之上的,已经学习Linux的开发人员估计也和我一样有这种心领神会的感觉吧!
-
华为mateX2销售火爆,预约人数近500万,1.8万元售价到底值不值?
-
Cost Function - Intuition I.vtt
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
MySQL 性能优化(思路拓展及实操)
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
laravel的command定时任务时间的设置
-
云开发后台+微信扫码点餐小程序+cms网页管理后台 含后厨端和用户端
-
【EDA】特征
-
【爱码农】C#制作MDI文本编辑器
-
使用vue搭建微信H5公众号项目
-
idea在配置git服务器
-
NFS 实现高可用(DRBD + heartbeat)
-
PPT大神之路高清教程
-
Windows系统管理
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
导航定位_绪论
-
SUSE Enterprise Linux 12 version.txt
-
Mysql数据库面试直通车
-
11.6 异常和路径的处理3-3.docx
-
MySQL 触发器