Docker之Dockerfile

2023-05-16

Dockerfile介绍
构建步骤:
1、编写一个dockerfile文件
2、docker build 构建一个镜像
3、docker run 运行一个镜像
4、docker push发布镜像(DockerHub、阿里云镜像仓库)

Dockerfile构建过程
基础知识:
1、每个保留关键字(指令)必须是大写字母
2、执行从上到下
3、#表示注释
4、每一个指令都会创建并提交一个新的镜像层,并提交!
在这里插入图片描述
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!
Docker镜像逐渐成为企业交付的标准,必须要掌握!
步骤:开发,部署,运维…
Dockerfile:构建文件,定义了一切的步骤,源代码
DockerImages:通过Dockerfile构建生成的镜像,最终发布和运行的产品!
Docker容器:容器就是镜像运行起来提供服务的;

Dockerfile指令:

FROM  #基础镜像 
MAINTAINER		 #镜像是谁写的 姓名+邮箱
RUN 			 #镜像构建的时候运行的命令
ADD 		     #步骤,也就是添加的内容
WORKDIR			 #镜像工作目录
VOLUME			 #挂载的目录位置
EXPOSE			 #指定对外窗口
CMD				 #制定这个容器启动时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT		 # 制定这个容器启动时候要运行的命令,可以追加命令
ONBUILD			 #当构建一个被继承的镜像时候,会运行ONBULID指令
COPY			 #类似ADD,将文件拷贝到镜像中
ENV 			 #构建的时候,设置环境变量

实战测试:
Docker Hub中99的镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件;
1、创建一个自己的centos:

FROM centos
MAINTAINER LIUYANG<liuyang@yonyousj.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 666

CMD echo $MYPATH
CMD /bin/bash

2、运行docker build

#此处注意:build的文件不要放在根目录
[root@liuyang dockerfile]# docker build -f first_dockerfile  -t centos_dockerfile:1.1 .

3、运行自己的镜像,生成容器

[root@liuyang dockerfile]# docker run -it centos_dockerfile:1.2 /bin/bash
[root@5b0c78af5c93 local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@5b0c78af5c93 local]# vim 666.txt
[root@5b0c78af5c93 local]# ls
666.txt  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@5b0c78af5c93 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.12  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:0c  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 656 (656.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@5b0c78af5c93 local]#

4、查看docker history 构建历史
docker history 镜像ID

[root@liuyang dockerfile]# docker history 2900faf7489f
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
2900faf7489f   2 minutes ago    /bin/sh -c #(nop)  CMD ["/bin/sh"]   0B
a48457d6160f   17 minutes ago   /bin/sh -c #(nop)  EXPOSE 666                   0B
4e1527066ca7   17 minutes ago   /bin/sh -c yum -y install net-tools             23.3MB
8f39a2e69363   17 minutes ago   /bin/sh -c yum -y install vim                   58MB
0062e7d22856   18 minutes ago   /bin/sh -c #(nop) WORKDIR /usr/local            0B
5a23524d576c   18 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B
61693d326cbc   18 minutes ago   /bin/sh -c #(nop)  MAINTAINER LIUYANG<liuyan…   0B
300e315adb2f   3 months ago     /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      3 months ago     /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      3 months ago     /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB
[root@liuyang dockerfile]#
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker之Dockerfile 的相关文章

随机推荐

  • 程序员,这四个学习建议值得收藏

    大家好 xff0c 我是本周的值班编辑 江南一点雨 xff0c 本周将由我为大家排版并送出技术干货 xff0c 大家可以在公众号后台回复 springboot xff0c 获取最新版 Spring Boot2 1 6 视频教程试看 在我看来
  • 底层原理解析

    目录 HashMap底层原理 xff1a ConcurrentHashMap 底层原理 HashMap底层原理 xff1a 1 HashMap概述 xff1a HashMap是一个散列桶 xff08 数组和链表 xff09 xff0c 它存
  • Java ServerSocket & Socket 实现 单组【客户端⇄服务端】双工通信(双向通信)

    Server java 服务器端开启服务 package com example socket service import lombok SneakyThrows import java net ServerSocket import j
  • docker搭建容器过程

    docker 环境创建 配置apt国内镜像源 备份源 span class token function cp span etc apt sources list etc apt sources list backup span class
  • FreeRTOS进程间通信-消息队列

    消息队列是进程间的一种通信机制 xff0c 实际项目运用很多 1 什么是消息队列 xff1f 2 消息队列API函数 3 在进程间通信使用消息队列 4 在中断中使用消息队列 1 1 消息队列是什么 xff1f 消息队列是realtime o
  • 三十岁了从零开始学python还有前途吗?很迷茫啊

    对于学习这件事 xff0c 我一直认为没有时间先后 xff0c 啥时候学习都不晚 xff0c 不管你现在年龄多大 xff0c 只要有心想学习 xff0c 一切都好说 首先 xff0c 你要学的python是属于技术类的知识 xff0c 对于
  • SpringBoot:使用Caffeine实现缓存

    在本博客中 xff0c 我们将探讨如何使用Spring的缓存框架向任何Spring Boot应用程序添加基本缓存支持 xff0c 如果没有正确实现 xff0c 还将探讨缓存的一些问题 最后但并非最不重要的一点是 xff0c 我们将看几个在真
  • 树莓派结合PIXHAWK飞控实现四轴双目视觉避障

    树莓派结合Pixhawk飞控实现四轴双目视觉避障 灰信网 xff08 软件开发博客聚合 xff09 无人机双目视觉避障的实现 本文将介绍如何使用树莓派结合PIX飞控实现无人机双目视觉避障的功能 主要硬件 我们以双目摄像头 43 树莓派 43
  • ::在c++中什么意思

    好多年没有用c 43 43 了 xff0c 今天在研究深度学习部署框架ncnn xff0c 看到这个突然想不起来了 xff0c 就查了一下资料 34 34 在C 43 43 中表示作用域 xff0c 和所属关系 34 34 是运算符中等级最
  • 基于Jetson Nano嵌入式平台的YOLOV3-tiny模型部署

    1 嵌入式平台简介 嵌入式是指可以嵌入设备或装置的特殊计算机系统 一般来说 xff0c 具有数字接口的设备都有嵌入式系统 xff0c 如手机 车载电脑 智能手表等 xff0c 而嵌入式人工智能则是使人工智能算法能够在终端设备上运行的技术概念
  • 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载

    原文 xff1a 机器人操作系统ROS 深度相机 43 激光雷达实现vSLAM建图与导航 wx5d23599e462fa的技术博客 51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航 目录 一 概述 1 深度
  • 程序员教你用代码制作飞翔的小鸟--Java小游戏,正好拿去和给女神一起玩

    先点赞后观看 养成好习惯 一 写在前面 xff1a 飞扬的小鸟 是一款曾经比较火热的小游戏 语言 Java工具 IntelliJ IDEA xff0c JDK 16 二效果图 xff1a 代码部分 代码如下仅供参考 可以直接拿去复制粘贴 p
  • 深入理解Java枚举类型(enum)

    版权申明 未经博主同意 xff0c 谢绝转载 xff01 xff08 请尊重原创 xff0c 博主保留追究权 xff09 http blog csdn net javazejian article details 71333103 出自 z
  • 秋招面试上岸经验分享

    学弟学妹们好 xff0c 我是18级14班的刘文豪 xff0c 很开心能在这里给大家分享一些我最近的面试经历 从21年6月28号第一场面试金山西山居 xff0c 到21年11月29号最后一场面试理想汽车 xff0c 大大小小的面试自己也经历
  • JT905实现(一):协议的简单讲解

    目录 背景 主线 协议 1 各方关系 2 协议简介 背景 最近在做905协议 xff0c 本想着靠着度娘扒拉下代码参考一下 xff0c 发现资源非常有限 xff0c 于是就只有自己动手实现了一番 xff0c 也踩了几个坑 本着开源共享的精神
  • 世界上应用最广泛的算法之一的卡尔曼滤波算法原理-从放弃到精通-无人机/机器人应用

    导读 xff1a 随着传感技术 机器人 自动驾驶以及航空航天等技术的不断发展 xff0c 对控制系统的精度及稳定性的要求也越来越高 卡尔曼滤波作为一种状态最优估计的方法 xff0c 其应用也越来越普遍 xff0c 如在无人机 机器人等领域均
  • Java程序员面试简历模板(30套简历模板+300套简历)

    需要免费领取简历模板和简历套装欢迎加群862461829 群里还含有 xff1a Java80g学习视频 43 Java学习书籍 43 Java项目实战源码 43 安装软件等 各类资源都有哦 简历是你吸引面试官的第一步 xff0c 如何让你
  • 中国程序员之我还是一名说唱歌手

    双重身份 List item 小编虽然也是一名程序员但是我的隐藏身份其实是一名说唱歌手 xff0c 没错就是你们口中的 rapper xff0c xff0c 而对于很多人有这样的双重身份早已见怪不怪了 xff01 哈哈哈我来举个例子吧 xf
  • MapReduce小文件问题

    MapReduce小文件问题 1 小文件处理的弊端 1 每个小文件都要执行一次map任务 增加map任务的开销 2 小文件太多 会耗费很多时间去寻址 3 需要记录小文件的元数据 造成namenode的内存浪费 2 解决办法 1 尽量避免出现
  • Docker之Dockerfile

    Dockerfile介绍 构建步骤 xff1a 1 编写一个dockerfile文件 2 docker build 构建一个镜像 3 docker run 运行一个镜像 4 docker push发布镜像 xff08 DockerHub 阿