首页 > 其他分享 >docker实战学习2022版本(五)之DockFile入门实战

docker实战学习2022版本(五)之DockFile入门实战

时间:2022-11-05 23:07:38浏览次数:74  
标签:实战 RUN CMD DockFile ENTRYPOINT 2022 HOME 镜像 docker


DockFile:DockFile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

官网:https://docs.docker.com/engine/reference/builder/

构建三部曲:

  • 编写dockFile文件
  • docker build命令构建镜像
  • docker run 根据镜像运行容器实例

dockFile内容基础知识:

docker实战学习2022版本(五)之DockFile入门实战_运维

 docker执行dockerFile的大致流程:

docker实战学习2022版本(五)之DockFile入门实战_centos_02

 

docker实战学习2022版本(五)之DockFile入门实战_运维_03

DockerFile常用保留字指令:

  • FROM:基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是FROM
  • MAINTAINER:镜像维护者的姓名和邮箱地址
  • RUN:容器构建时需要运行的命令,有两种格式:
  1. shell格式:RUN <命令行命令>  例如:RUN yum -y install vim
  2. exec格式:RUN ["可执行文件","参数1","参数2"]    例如:RUN["./test.php","dev","offline"]
  • EXPOSE:当前容器对外暴漏出的端口
  • WORKDIR:指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
  • USER:指定该镜像以什么样的用户去执行,如果不指定那默认就是root
  • ENV:用来在构建镜像过程中设置环境变量
  • ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
  • COPY:
  • VOLUME:容器数据卷,用于数据保存和持久化工作
  • CMD:指定容器启动后要干的事情,注意DockFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换;CMD和RUN命令的区别:CMD是在docker  run时运行,RUN是在docker build时运行。
  • ENTRYPOINT:也是用来指定一个容器启动时要运行的命令,类似于CMD指令,但是ENTRYPOINT不会被docker run 后面的命令覆盖,而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定的程序。

ENTRYPOINT命令格式:ENTRYPOINT ["<executeable>" , "<param1>" , "<param2>" , ......]

docker实战学习2022版本(五)之DockFile入门实战_centos_04

 优点:在执行docker run的时候可以指定ENTRYPOINT运行所需的参数

注意:如果dockerFile中存在多个ENTRYPOINT指令,仅最后一个生效

最后总结:

docker实战学习2022版本(五)之DockFile入门实战_centos_05

 案例实战:自定义镜像mycentosjava8

首先下载好centos镜像

docker实战学习2022版本(五)之DockFile入门实战_centos_06

 需求:centos7镜像具备vim + config + jdk8

jdk下载地址:​​Java Downloads | Oracle​

docker实战学习2022版本(五)之DockFile入门实战_docker_07

编写DockFile文件:

首先在根目录下创建一个myfile的文件夹:

docker实战学习2022版本(五)之DockFile入门实战_centos_08

 将jdk的压缩包传送到该文件夹下:

docker实战学习2022版本(五)之DockFile入门实战_java_09

然后在该文件夹下新建一个DockerFile文件:

docker实战学习2022版本(五)之DockFile入门实战_docker_10

  

注意名字要是Dockerfile)文件内容如下:

FROM centos:7
MAINTAINER hanansheng<[email protected]>

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

构建新镜像:在myfile下执行命令

docker build -t 新镜像名字:TAG .

// docker build -t centosjava8:1.5 .

注意:TAG后面有个空格,空格后还有个.

不出意外的话执行完命令就可以了,如下图所示:

docker实战学习2022版本(五)之DockFile入门实战_运维_11

 可以看到由于新加了很多东西,镜像内容大小也变大了很多

docker实战学习2022版本(五)之DockFile入门实战_运维_12

 运行新镜像:docker run -it  新镜像名字:TAG

测试:vim  ifconfig   java-version命令都已生效!!!

虚悬镜像:仓库名、标签名都为<none>的镜像,俗称dangling image

docker实战学习2022版本(五)之DockFile入门实战_java_13

查看虚悬镜像:docker image ls -f dangling=true

删除虚悬镜像:docker image prune

 

 

标签:实战,RUN,CMD,DockFile,ENTRYPOINT,2022,HOME,镜像,docker
From: https://blog.51cto.com/u_15273762/5826321

相关文章

  • CSP-J 2022
    前言今年没考好,估分100+60+0+10=170pts,大概能混个2=,没什么用。这下好了,期中也砸了,已经排到全校30开外了,果然鱼和熊掌不可兼得,况且我双双落空,接下来怕是想搞也搞不了了......
  • 2022-2023-1 20221306 《计算机基础和程序设计》第十周学习总结
    作业信息这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10作业目标学习......
  • 【实战】Hadoop安装01-伪分布式-Pseudo
    Hadoop安装-伪分布式-Pseudo〇、所需资料一、前置环境安装1、包含内容(1)安装虚拟机安装、系统安装(2)配置ip、host、主机名配置关闭防火墙及selinuxSSH免密登录(2)基础环境安装安......
  • CSP202203_4
    CSP202203_4目录CSP202203_4题目思路Code题目通信系统管理思路首先分析题目的大致要求。简化的题干就是,给定n个点和m次操作。每次操作中会对两点u、v建立一条......
  • 成熟企业级开源监控解决方案Zabbix6.2关键功能实战-上
    @目录概述定义监控作用使用理解监控对象和指标架构组成常用监控软件分析版本选型俗语安装部署方式部署zabbix-agent概述定义Zabbix官网地址https://www.zabbix.com/......
  • 洛谷P8775 [蓝桥杯 2022 省 A] 青蛙过河 题解 贪心+二分答案
    题目链接​​https://www.luogu.com.cn/problem/P8775​​题目大意小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。河里的石头排成了一条......
  • 2022-11-5学习内容
    1.案例-购物车-数据库准备1.1ShoppingDBHelper.javapackagecom.example.chapter06.database;importandroid.content.Context;importandroid.database.sqlite.SQLi......
  • 【闲话】2022.11.05
    在跟zixiang聊高温假的事不知不觉就谈到惠阳厂了网上搜了一下,真找到了对着当年的图片还能看出来哪是哪厂门口的杨树一眼就看出来了虽然有些东西年代不一楼房从60......
  • 华为开发者大会2022:HMS Core 3D建模服务再升级,万物皆可驱动
    11月4日,HDC2022华为开发者大会在东莞松山湖举办。在本次大会的HMSCore创新图形能力分论坛中,HMSCore重点介绍了其在3D技术领域的创新应用方向,其中3D建模服务展示了创新的自......
  • CSP-S2022退役记
    这几天抽空把\(CSP-S\)的题改了一下,算是明白我是什么东西了。反正本次\(CSP-S\)连暴力都没能写满,我在知道\(T3\)暴力怎么写后觉得太麻烦,就去搞\(T1\)了,导致一分也......