Docker 创建镜像

文章首发自个人网站:https://www.exception.site/docker/docker-create-image

本文中,您将学习 Docker 如何创建镜像?Docker 创建镜像主要有三种:

  1. 基于已有的镜像创建;
  2. 基于 Dockerfile 来创建;
  3. 基于本地模板来导入;

我们将主要介绍常用的 1,2 两种。

一、基于已有的镜像创建

通过如下命令来创建:

docker container commit

支持的子命令如下:

  • -a, --author="": 作者信息;
  • -c, --change=[]: 可以在提交的时候执行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;
  • -m, --message="": 提交信息;
  • -p, --pause=true: 提交时,暂停容器运行。

接下来,基于本地已有的 Ubuntu 镜像,创建一个新的镜像:

Docker 创建镜像

首先,让我将它运行起来,并在其中创建一个 test.txt 文件:

Docker 创建镜像

命令如下:

docker run -it docker.io/ubuntu:latest /bin/bash
root@a0a0c8cfec3a:/# touch test.txt
root@a0a0c8cfec3a:/# exit

创建完 test.txt 文件后,需要记住标注的容器 ID: a0a0c8cfec3a, 用它来提交一个新的镜像(PS: 你也可以通过名称来提交镜像,这里只演示通过 ID 的方式)。

执行命令:

docker container commit -m "Added test.txt file" -a "Allen" a0a0c8cfec3a test:0.1

提交成功后,会返回新创建的镜像 ID 信息,如下图所示:

Docker 提交新创建的镜像

再次查看本地镜像信息,可以看到新创建的 test:0.1 镜像了:

Docker 查看镜像信息

二、基于 Dockerfile 来创建镜像

通过 Dockerfile 的方式来创建镜像,是最常见的一种方式了,也是比较推荐的方式。Dockerfile 是一个文本指令文件,它描述了是如何基于一个父镜像,来创建一个新镜像的过程。

下面让我们来编写一个简单的 Dockerfile 文件,它描述了基于 Ubuntu 父镜像,安装 Python3 环境的镜像:

FROM docker.io/ubuntu:latestLABEL version="1.0" maintainer="Allen <weiwosuo@github>"RUN apt-get update && \apt-get install -y python3 && \apt-get clean && \rm -rf /var/lib/apt/lists/*

创建完成后,通过这个 Dockerfile 文件,来构建新的镜像,执行命令:

docker image build -t python:3 .

注意:命令的最后有个点,如果不加的话,会构建不成功 !

Docker 通过 Dockerfile 构建镜像

编译成功后,再次查看本地镜像信息,就可以看到新构建的 python:3 镜像了。

Docker 查看镜像信息

三、总结

本文中,我们学习了 Docker 中如何基于本地已有的镜像,来创建镜像,以及如何通过 Dockerfile 来创建新的镜像。祝您学习愉快!

转载于:https://www.cnblogs.com/quanxiaoha/p/10623538.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Azure Pipelines来实现Teams App的CI

我在之前的文章里介绍了如何一步步配置CI/CD来部署Teams App( 之前的文章 )&#xff0c;随着Azure DevOps的发展&#xff0c;微软推出了Azure Pipelines。在这篇文章中&#xff0c;主要介绍什么是Azure Pipelines&#xff0c;以及如何使用Azure Pipelines来进行Teams App的构建…

004-React入门概述

一、概述 参考地址&#xff1a;https://reactjs.org/docs/try-react.html 1.1、本地快速体验 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World</title><script src"https://unpkg.com/react16/…

开发Teams Tabs应用程序

什么是Teams Tabs Tabs是微软Teams的一种十分有用的扩展方式。可以非常方便的和现有的网站或者网页应用进行整合。具体的说明不在这里展开了。可以阅读微软官方的详细说明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/tabs/tabs-overvie…

(转)关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类&#xff0c;该类用来对日期字符串进行解析和格式化输出&#xff0c;但如果使用不小心会导致非常微妙和难以调试的问题&#xff0c;因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的&…

IDEA开发工具的学习

1.设置jdk的版本 &#xff0c;快捷键&#xff1a;ctrl shirt alt s 打开项目的设置&#xff0c;选择Project 进行 jdk版本的设置。 2.鼠标移到项目上&#xff0c;右键&#xff0c;Show in Explorer 定位到当前项目对应的文件夹中 3.每次关闭项目时&#xff0c;需要手动选择Fi…

顺利达成微软HacktoberFest 2018

昨天收到邮件&#xff0c;我的HacktoberFest 2018奖品终于从美国寄出来了&#xff0c;不知道飘洋过海多久可以寄到。 今年的HacktoberFest 2018除了微软官方博客的宣传&#xff0c;连Channel 9的美女主播也在TWC上大肆宣传。 活动内容是在整个10月份需要给微软的开源代码贡献5…

更新!在线状态和用户的共存模式保持一致

根据用户反馈&#xff0c;我们正在改进&#xff1a;当组织同时使用Microsoft Teams和Skype for Business时的用户在线状态。通过此更新&#xff0c;路由和在线状态将完全保持一致。为确保路由能跟随用户的在线状态&#xff0c;所以在线状态的更新现在会基于用户的共存模式。 如…

centos上安装supervisor来管理dotnetcore等应用程序

supervisor 介绍&#xff1a;这是一款用python编写的进程管理工具&#xff0c;可以守护他管理的所有进程&#xff0c;防止异常退出&#xff0c;以及提供一个可视化的web界面来手动管理&#xff0c;打开关闭重启各种应用&#xff0c;界面如下&#xff1a;关于在centos上安装supe…

新增功能!Trello个人应用程序登陆 Microsoft Teams

从初创企业到《财富》500强公司, Trello是团队在任何项目上进行合作的视觉方式。在Microsoft Teams中, 我们发现围绕项目进行大量对话和协作的方式。因此, 一个首屈一指的项目管理工具应该与团队协作的终极枢纽进行合作, 以便让员工更好地一起工作。 如你所知, 我们已经为Micr…

Linux bc 命令简单学习

1. bash里面能够实现比较简单的四则运算 echo $((10*20)) 注意是 双括号 $ 地址符号. 2. 但是比较复杂的 可能就难以为继了 比如不支持精度 3. 所以这里面需要使用 bc 命令来执行相关的操作. man 内容: usage: bc [options] [file ...] -h --help print this usage and exit…

终于收到HacktoberFest的奖品啦

去年10月份给微软repo提交了5个PR&#xff0c;达成了HacktoberFest 2018&#xff0c;今天终于收到了从美国到澳洲&#xff0c;飘洋过海&#xff0c;姗姗来迟的T-shirt&#xff0c;不过大小正好。算是新年礼物了&#xff0c;哈哈

三、SpringBoot-application.properties配置文件和application.yml配置文件

其实SpringBoot的配置文件有.properties和.yml两种形式&#xff0c;两种配置文件的效果类似&#xff0c;只不过是格式不同而已&#xff0c;孩儿们可以根据下面这几种张截图&#xff0c;通过对比端口号的配置&#xff0c;以及连接SQLServer数据库的配置的书写格式来自己体会两者…

Teams中的快捷键让沟通协作更加高效

使用Teams的快捷键可以帮助我们提高日常沟通协作的效率。 一、快捷键分类 1.常规2.导航3.聊天输入界面4.团队和会议 1.常规 功能桌面版本快捷键WebApp版本快捷键搜索CtrlECtrlE显示命令CtrlSlash (/)CtrlSlash (/)gotoCtrlGCtrlShiftG开始新聊天CtrlNAltN打开设置CtrlComma …

线程间的协作(2)——生产者与消费者模式

2019独角兽企业重金招聘Python工程师标准>>> 1.何为生产者与消费者 在线程世界里&#xff0c;生产者就是生产数据的线程&#xff0c;消费者就是消费数据的线程。 import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.…

一位面试者提到直接调用vuex中mutations方法

简述是用this.$store.mutations.xxx(xx)方式调用&#xff0c;因从未见过此种调用方式&#xff0c;回来就搜索了一下&#xff0c;查询结果如下 首先前文&#xff1a; 获取 state 的方式有两种&#xff0c;分别是 this.$store.state.num 这种直接获取的方式&#xff0c;以及通过 …

从无到有到完善 - Teams抽奖机器人开发历程

我没有写博客有2&#xff0c;3个月了&#xff0c;好几个朋友来问我怎么不继续了。实际上这几个月我受到微软好友的鼓舞和鼓励&#xff0c;再加上今年2月1日有幸成为了微软中国区第一位Teams的MVP&#xff0c;所以决定不再停留于技术demo&#xff0c;而是使用微软最新的技术开发…

残差网络

作用&#xff1a;使得深层网络可以获得更好的性能&#xff0c;没有它&#xff0c;即使加深网络的层数无法直接获得性能的提升。 我的理解&#xff1a;1、使得低层的特征表示可以越层传递。 2、在反向传播时LOSS可以直接训练低层特征。 3、浅层网络的恒等映射&#xff0c;深层网…

Teams的MessageExtension最新功能:Initiate actions

官方文档到目前为止对这个initiate action的说明比较简洁&#xff0c;由于没有一步步的截图和说明&#xff0c;从头到尾看一遍可能还在云里雾里。 我一步步摸索着走了一遍&#xff0c;发现这个initiate action的功能如此强大&#xff0c;不敢独享&#xff0c;所以写此博文&…

Teams App抽奖机器人 - 基础架构

今天我们来聊一下&#xff0c;一个Teams app的infrastructure&#xff0c;我在考虑LuckyDraw的主要出于这么几个出发点&#xff1a; 可管理性。因为这是一个个人产品&#xff0c;以后维护工作也只有我一个人&#xff0c;所以我希望整个infrastructure简单、易管理&#xff0c;不…

如何做Teams Bot的测试覆盖

在我昨天的文章中介绍了如果对Teams bot做service level的测试&#xff0c;那到底要写多少的测试代码才算够&#xff1f;如何才算测试到位了&#xff1f;这个时候我们就需要用”测试覆盖率”来衡量&#xff0c;虽然覆盖率高并不一定代表着就可以高枕无忧的以为我们软件质量高了…