码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Docker(9)DockerFile


    文章目录

    • 什么是DockerFile
    • 构建过程
      • 执行DockerFile大致流程
    • 常用保留字
    • DockerFile小案例
      • 创建dockerfile文件
      • dockerfile内部脚本
      • 执行命令
      • 虚悬镜像

    什么是DockerFile

    DockerFile 使用来构建Docker镜像的文本文件,是由一条条构建镜像所需要的指令和参数组成脚本

    在这里插入图片描述

    构建过程

    1. 保留字指令必须大写且至少跟随一个参数
    2. 指令从上到下执行
    3. # 标识注释
    4. 每条指令都会创建一个新的镜像层并对镜像进行提交

    执行DockerFile大致流程

    1. docker从基础镜像运行一个容器
    2. 执行一条指令并对容器做出修改
    3. 执行类似 docker commit 的操作提交一个新的镜像层
    4. docker 再基于刚提交的镜像运行一个新容器
    5. 执行 dockerfile 中的下一条指令直到指令执行完成

    在这里插入图片描述

    常用保留字

    保留字含义
    FROM基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是FROM
    MAINTAINER镜像维护者的姓名和邮箱地址
    RUN容器构建时需要运行的命令
    EXPOSE当前容器对外暴露出的端口
    WORKDIR指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
    USER指定该镜像以什么样的用户去执行,如果都不指定,默认为root
    ENV用来在构建镜像过程中配置环境变量
    ADD将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
    COPY将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
    VOLUME容器数据卷,用于数据保存和持久化工作
    CMD指定一个容器启动时要执行的命令 (会被之后的CMD覆盖)
    ENTRYPOINT也是指定一个容器启动时要执行的命令 (不会被之后的CMD覆盖,会将其当作参数)

    DockerFile小案例

    需求说明

    使原始的centos具备 vim+ifconfig 这两项工具

    创建dockerfile文件

    vim Dockerfile
    
    • 1

    dockerfile内部脚本

    FROM centos:7
     
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
     
    #安装vim编辑器
    RUN yum -y install vim
    #安装ifconfig命令查看网络IP
    RUN yum -y install net-tools
     
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "success--------------ok"
    CMD bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    执行命令

    在Dockerfile文件目录下执行

    # 别落下最后的点
    docker build -t centos2:1.1 .
    
    # 查看images
    docker images -a
    
    • 1
    • 2
    • 3
    • 4
    • 5

    虚悬镜像

    如果执行过程中出现错误有可能出现虚悬镜像(仓库和标签号都为 )

    我们可以通过以下命令进行删除虚悬镜像

    docker image prune
    错误有可能出现虚悬镜像(仓库和标签号都为 <none>)
    
    我们可以通过以下命令进行删除虚悬镜像
    ```shell
    docker image prune
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    Hadoop学习总结(搭建Hadoop集群的安装准备)
    键值对RDD数据自定义分区_大数据培训
    Sui第六轮资助:15个项目共获得106万美元的资助
    Dubbo学习
    node 之 express 框架(初级)
    基于 chinese-roberta-wwm-ext 微调训练中文命名实体识别任务
    CSDN21天学习挑战赛 - 第六篇打卡文章
    2021 第四届 浙江省大学生网络与信息安全竞赛技能赛 决赛 Writeup,5题
    Linux:安装minio并设置开机自启
    日志中打印统计信息的方案
  • 原文地址:https://blog.csdn.net/gtd54789/article/details/128028796
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号