首页 > 其他分享 >dockerfile基本命令+镜像制作

dockerfile基本命令+镜像制作

时间:2023-12-10 20:05:56浏览次数:34  
标签:容器 制作 CMD 构建 mysql 镜像 docker dockerfile

image

DockerFile

03DockerFile

1.DockerFile的概念

用来构建docker​镜像的构建文件,由一系列参数和命令构成的脚本

大体总览:

image

1.构建过程

要遵循的规则:

image

2.执行流程

Docker​执行一个Dockerfile​脚本的流程大致如下

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

<span style="font-weight: bold;" data-type="strong">解释下:</span>

1.dockerfile_软件的原材料

2.docker镜像是软件的交付品

3.docker容器则可以认为是软件的运行态

image

‍3.常用的构建指令

<span style="font-weight: bold;" data-type="strong">指令</span> <span style="font-weight: bold;" data-type="strong">说明</span>
<span style="font-weight: bold;" data-type="strong">FROM</span> <span style="font-weight: bold;" data-type="strong">基础镜像,当前新镜像是基于哪个镜像的,有继承的意味</span>
<span style="font-weight: bold;" data-type="strong">MAINTAINER</span> <span style="font-weight: bold;" data-type="strong">镜像维护者的姓名和邮箱地址</span>
<span style="font-weight: bold;" data-type="strong">RUN</span> <span style="font-weight: bold;" data-type="strong">容器构建时需要运行的命令</span>
<span style="font-weight: bold;" data-type="strong">EXPOSE</span> <span style="font-weight: bold;" data-type="strong">当前容器对外暴露的端口</span>
<span style="font-weight: bold;" data-type="strong">WORKDIR</span> <span style="font-weight: bold;" data-type="strong">指定在创建容器后,终端默认登录的进来工作目录,一个落脚点</span>
<span style="font-weight: bold;" data-type="strong">ENV</span> <span style="font-weight: bold;" data-type="strong">用来在构建镜像过程中设置环境变量</span>
<span style="font-weight: bold;" data-type="strong">ADD</span> <span style="font-weight: bold;" data-type="strong">将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包</span>
<span style="font-weight: bold;" data-type="strong">COPY</span> <span style="font-weight: bold;" data-type="strong">类似ADD,拷贝文件和目录到镜像中。</span> <span style="font-weight: bold;" data-type="strong">将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置</span> <span style="font-weight: bold;" data-type="strong">COPY src dest</span> <span style="font-weight: bold;" data-type="strong">COPY ["src","dest"]</span>
<span style="font-weight: bold;" data-type="strong">VOLUME</span> <span style="font-weight: bold;" data-type="strong">容器数据卷,用于数据保存和持久化工作</span>
<span style="font-weight: bold;" data-type="strong">CMD</span> <span style="font-weight: bold;" data-type="strong">指定一个容器启动时要运行的命令</span> <span style="font-weight: bold;" data-type="strong">Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换</span>
<span style="font-weight: bold;" data-type="strong">ENTRYPOINT</span> <span style="font-weight: bold;" data-type="strong">指定一个容器启动时要运行的命令</span> <span style="font-weight: bold;" data-type="strong">ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数</span>
<span style="font-weight: bold;" data-type="strong">ONBUILD</span> <span style="font-weight: bold;" data-type="strong">当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发</span>

<span style="font-weight: bold;" data-type="strong">DockerFile命令</span>

<span style="font-weight: bold;" data-type="strong">BUILD</span> <span style="font-weight: bold;" data-type="strong">BOTH</span> <span style="font-weight: bold;" data-type="strong">RUN</span>
<span style="font-weight: bold;" data-type="strong">FROM</span> <span style="font-weight: bold;" data-type="strong">WORKDIR</span> <span style="font-weight: bold;" data-type="strong">CMD</span>
<span style="font-weight: bold;" data-type="strong">MAINTAINER</span> <span style="font-weight: bold;" data-type="strong">USER</span> <span style="font-weight: bold;" data-type="strong">ENV</span>
<span style="font-weight: bold;" data-type="strong">COPY</span> <span style="font-weight: bold;" data-type="strong">EXPOSE</span>
<span style="font-weight: bold;" data-type="strong">ADD</span> <span style="font-weight: bold;" data-type="strong">VOLUME</span>
<span style="font-weight: bold;" data-type="strong">RUN</span> <span style="font-weight: bold;" data-type="strong">ENTRYPOINT</span>
<span style="font-weight: bold;" data-type="strong">ONBUILD</span>
<span style="font-weight: bold;" data-type="strong">.dockerignore</span> <br />

3.构建镜像

1.创建DockerFile​文件

vim  dockers

FROM centos:centos7

MAINTAINER aristo<[email protected]>

ENV MYPATH /usr/local

WORKDIR  $MYPATH

RUN yum -y install vim

EXPOSE  80

CMD echo $MYPATH
CMD echo "success =------> boyunv!~"
CMD /bin/bash

2.构建镜像

 docker build -f dockers -t centos:1.0  .
 ##-f: 我们创建的dockerfile文件
 ##-t: 创建的文件名
 ## 切记后面的一个点不能忘记添加

<span style="font-weight: bold;" data-type="strong">构建的结果</span>

在这里插入图片描述

3.运行我们的创建的1.0​镜像

docker run -it centos:1.0

3.MYSQL的启动

docker run -p 12345:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
f349e5bcec0706a353880e5c5b17e73f2d3dda704e57425292f09e0c5397cfb8

标签:容器,制作,CMD,构建,mysql,镜像,docker,dockerfile
From: https://blog.51cto.com/u_16339630/8762481

相关文章

  • 教你自己制作一个ALU
    计算机在没有齿轮的时候是如何负责运算的呢?ALU就是计算机里负责运算的组件,这篇文章就是教你自己做一个ALU第一个ALU1970年,第一个封装在单个芯片内的完整ALU——英特尔74181诞生,这在当时是惊人的工程壮举!算术单元二进制中,1=true,0=false两个数字相加加法电路半加器(不可处理......
  • VMware workstation 17安装虚拟机ubuntu原始镜像.iso注意事项
    1在安装虚拟机向导对话框,命名虚拟机位置:A虚拟机名称:这里选ubuntu64位B位置(L):该选项要注意:安装时会清除该位置的内容,并且安装完后打开该位置就全部是虚拟机的文件了,跟windows的C盘一样,不能放其他文件了。我选择的位置时E盘,安装完后,打开E盘,里面很多ubuntu......
  • 使用freemarker,导出制作好的ftl模板,并写入数据
    使用freemarker,导出制作好的ftl模板,并写入数据一、背景1.1项目背景最近在开发一个项目,需要导出一些数据,然后写入到word文档中,然后再导出到本地,这个需求是比较常见的,但是我在网上找了很多资料,都没有找到一个比较好的解决方案,所以就自己写了一个,这里分享给大家,希望能帮助到大家......
  • Python制作AI贪吃蛇,很多很多细节、思路都写下来了!
    前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样)实现效果:具体功能:1.智能模式:电脑自己玩(自己吃食物)2.人机对战:电脑和人操作(在上步的基础上加一个键盘控制的贪吃蛇即可)实现环境:Pycharm+Pytho......
  • DIY鱼缸制作教程
    鱼缸玻璃的连接方式:边包底...鱼缸5块玻璃的尺寸计算:使用在线工具:http://www.sexy0769.com/yugangdiy/index.html直接计算鱼缸玻璃选择首先说明:不能用钢化玻璃,钢化玻璃不稳定,容易自爆,不适合用在鱼缸上。普通浮法玻璃鱼缸爆的时候有裂缝,有补救或者倒水的时间,钢化玻璃爆会瞬间......
  • 深入理解Dockerfile:构建容器化应用的基石
    Docker已经成为现代软件开发和部署的标配工具之一,它的轻量级容器技术使得应用可以在不同环境中快速部署和运行。Dockerfile是构建Docker镜像的蓝图,定义了从基础镜像到最终应用镜像的一系列步骤。本篇博文将深入解析Dockerfile中常见的指令,带你逐步了解如何构建高效、可维护的Docker......
  • 产品说明书制作流程:从构思到完善的全面指南
    摘要:产品说明书是一种重要的沟通工具,用于向用户提供关于产品功能、用途和使用方法的详细信息。本文将介绍产品说明书制作的全面流程,从构思到完善,帮助您了解如何创建一份准确、清晰和易于理解的产品说明书。第一部分:构思与计划在制作产品说明书之前,首先需要进行构思和计划。这个阶段......
  • 系统镜像烧录
    启动产品需要两个步骤:烧录系统,启动系统ArmSoM系列产品的系统镜像包含了多种根文件系统,我们可以根据自己需求选择相应的镜像下载信息系统镜像包括了linux内核,基本的程序等,是运行ArmSoM系列产品必须项,所以我们需要在运行产品前为产品安装镜像1.获取系统镜像​访问百度网......
  • 【Docker】更改docker镜像的存储路径
    1.查看Docker存储路径dockerinfo|grep"DockerRootDir"2.关闭所有运行的容器···dockerps|awk'{print$1}'|xargsdockerstop···3.停止docker服务systemctlstopdocker4.新增的磁盘挂载点上新建目录,并将原有的docker容器和镜像全部拷贝过来,比如这里新增......
  • 拉取镜像代码
    #检测是否含有yq命令echo-e"正在将内容输出至$Images_File文件中,请稍等..."#获取Harbor中所有的项目(Projects)Project_List=$(curl-u${Harbor_User}:${Harbor_Passwd}-H"Content-Type:application/json"-XGET"${Harbor_Schema}://${Harbor_Address}/api/v2.0/......