Docker容器技术05

Docker镜像操作

学完了一些最基本的操作,接下来我们来学习一些关于docker镜像的基本操作。
首先我们来学习一下从docker hub上拉取镜像,以centos镜像为例,使用docker search命令搜索镜像:

从图上可以看见我们从docker hub搜索到很多镜像,接着我们来学习镜像的拉取,使用docker pull命令将镜像从docker hub拉取到本地:

这样我们可以通过docker images命令来查看本地的镜像:

而我们下载到本地的镜像存放在/var/lib/docker/overlay2

第一行就是我们下载的centos镜像在本地的文件。
我们学会了下载镜像,就应该了解一下删除镜像,删除镜像使用docker rmi命令:

删除时我们可以使用镜像的名字也可以使用镜像的ID。
现在我们来学习如何构建镜像,构建镜像有以下两种方法:docker commit命令和dockerfile,我们先来学习用docker commit命令构建镜像。
docker commit命令一般用于将修改过后的镜像提交为一个新的镜像,首先我们先使用centos镜像起一个容器,接着对容器进行更改,然后使用docker commit命令构建新的镜像:

接着用这个修改过的容器构建新的镜像:

docker commit命令的语法是这样的docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS有如下几个选择:

  • -a :提交的镜像作者名字。
  • -c :使用Dockerfile指令来创建镜像。
  • -m :提交时的说明文字。
  • -p :在commit时,将容器暂停。
    构建完成镜像之后,我们来试一下构建好的镜像是不是能用:

    可以看到刚刚构建的镜像可以用。
    接下来我们来说一下使用Dockerfile构建镜像:

    首先建立一个空的docker文件夹,然后再docker文件夹里面新建一个Dockerfile文件(注意:这里的文件名字只能用dockerfile命名)

    建完之后我们执行以下操作,(注意:构建操作只能在和Dockerfile同级目录下执行):

    构建完成之后我们可以使用docker images命令查看:

    这里就可以看到我们刚刚构建的名为centos的镜像了。
    现在我们以这个镜像为模板运行容器:
    可以看到这里启动容器之后默认运行了我刚刚写在DockerfileCMD里面的东命令,接下来我们来详细的说一下Dockerfile的使用。
  • FROM指令
    DockerFile第一条必须为FROM指令。如果同一个DockerFile创建多个镜像时,可使用多个FROM指令。
  • MAINTAINER
    指定维护者的信息。
  • RUN
    每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,因为镜像是分层的
  • CMD
    CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。
  • EXPOSE
    Docker 容器对外映射的端口,需要在 docker run 的时候使用-p或者-P选项生效。
  • ENV
    指定一个环境变量,会被后面的RUN指令使用。
  • ADD
    ADD复制本地主机文件、目录或者远程文件URLS添加到容器指定路径中,ADD命令会在复制时解压压缩文件。
  • COPY
    COPY复制新文件或者目录从 并且添加到容器指定路径中,不能添加远程文件的URLS。
  • VOLUME
    创建一个可以从本地主机或其他容器挂载的挂载点。
  • WORKDIR
    为后续的RUN命令指定工作目录
    到此我们就学会了如何构建镜像!

原文地址:https://www.cnblogs.com/Timesi/p/9165364.html

时间: 2024-08-06 10:57:08

Docker容器技术05的相关文章

当公有云Azure拥抱Docker容器技术

本文转载至 http://3387405.blog.51cto.com/3377405/1598977 预见未来看似是一件不太可能的事情,然而现在企业科技高速发展的态势完全超乎想象. 就在几周前InfoWorld的主编Eric Knorr在引流潮流专栏发表一篇非常火爆的关于2015年以及之后的九大科技企业趋势,在其中非常清晰的指出这九大潮流中头两位就是公有云的胜利和容器技术的狂热.从这里我们很容易理解为什么最近Scott Guthrie 发表并且Jason Zander 再次阐述与Docker合

如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

Rex-Ray 是一个优秀的 Docker volume driver,本节将演示其安装和配置方法. Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上,安装方法很简单,在需要使用 Rex-Ray driver 的主机 docker1 和 docker2 上运行如下命令: curl -sSL https://dl.bintray.com/emccode/rexray/install | sh - 然后创建并编辑 Rex-Ray 的配置文件 /etc/rexray/c

新书发布《每天5分钟玩转Docker容器技术》

后台不时收到关于纸质版教程书籍的询问,今天终于可以给大家一个交代了. <每天5分钟玩转Docker容器技术>现已在各大书城上架. 比较了一下,目前京东上最实惠:https://item.jd.com/16936307278.html 下面回答几个大家可能关心的问题. 1. 这本书包含哪些内容? 按照年初的计划,整个教程会涵盖容器生态系统中最重要的容器技术和平台技术. 由于版面篇幅的限制,这次出版的<每天5分钟玩转Docker容器技术>内容就是容器技术部分,具体内容如下: 平台技术部

万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容器的日志. Fluentd 是一个开源的数据收集器,它目前有超过 500 种的 plugin,可以连接各种数据源和数据输出组件.在接下来的实践中,Fluentd 会负责收集容器日志,然后发送给 Elasticsearch.日志处理流程如下: 这里我们用 Filebeat 将 Fluentd 收集到的

ELK 完整部署和使用 - 每天5分钟玩转 Docker 容器技术(90)

上一节已经部署了容器化的 ELK,本节讨论如何将日志导入 ELK 并进行图形化展示. 几乎所有的软件和应用都有自己的日志文件,容器也不例外.前面我们已经知道 Docker 会将容器日志记录到 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log,那么只要我们能够将此文件发送给 ELK 就可以实现日志管理. 要实现这一步其实不难,因为 ELK 提供了一个配套小工具 Filebeat,它能将指定路径下的日

初探 ELK - 每天5分钟玩转 Docker 容器技术(89)

在开源的日志管理方案中,最出名的莫过于 ELK 了.ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch一个近乎实时查询的全文搜索引擎.Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据. Logstash读取原始日志,并对其进行分析和过滤,然后将其转发给其他组件(比如 Elasticsearch)进行索引或存储.Logstash 支持丰富的 Input 和 Output 类型,能够处理各种应用的日志. Kiba

部署 Graylog 日志系统 - 每天5分钟玩转 Docker 容器技术(92)

Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集.检索.可视化 Dashboard.本节将实践用 Graylog 来管理 Docker 日志. Graylog 架构 Graylog 架构如下图所示: Graylog 负责接收来自各种设备和应用的日志,并为用户提供 Web 访问接口. Elasticsearch 用于索引和保存 Graylog 接收到的日志. MongoDB 负责保存 Graylog 自身的配置信息. 与 ELK 一样,Graylog 的部署方案很灵

如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-address=udp://localhost:12201 \ --log-opt tag="log-test-container-A" \ busybox sh -c 'while true; do echo "This is a log message from container A&

运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)

上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker service create --name web_server httpd 部署 service 的命令形式与运行容器的 docker run 很相似,--name 为 service 命名,httpd 为镜像的名字. 通过 docker service ls 可以查看当前 swarm 中的 service. REPLICAS 显示当前副本信息,0/1 的意思是 web_