• 售前

  • 售后

热门帖子
入门百科

Docker教程:使用容器(简单示例)

[复制链接]
热忽行退 显示全部楼层 发表于 2021-10-25 19:15:31 |阅读模式 打印 上一主题 下一主题
假如你是Docker的新手,看一下你应该学习的一些底子下令,以便开始管理容器。

Docker对软件开发生命周期产生了巨大影响,使得大规模软件摆设变得简单而且安全。这个教程将介绍运行、启动、制止和删除Docker容器的底子知识。

Docker使得在差别的操作体系上利用差别的编程语言很轻易,而全部这些都在同一主机上实现。

在Docker之后摆设你的软件变得更加轻易,你不必担心错过体系配置或先决条件。
Docker与虚拟机
假如你正利用虚拟运行你的软件,为什么还需要Docker来取代呢?

它们之间的告急区别在于Docker是一个在你的本机操作体系中运行的独立进程,而虚拟机是一个完整的隔离操作体系,它在主机操作体系之上运行,需要更多时间来加载。所以Docker比虚拟机有更多优势,比方:

      
  • 加载速率与虚拟机差别,所需的硬件资源很少。  
  • 在同一操作体系上同时运行多个Docker容器。  
  • 你可以修改容器并对其举行摆设,或将Docker文件界说提供给朋友,以便在同一情况中工作。
现实上,Docker不是虚拟机的替换品,而是办理特定标题。

假设你的应用步调需要3个或更多在差别操作体系上运行的服务,那么你可以在同一主机上安稳运行3个容器,而不是在同一主机上运行3个虚拟机。听起来很棒!

运行你的容器
在开始之前,请确保已精确安装Docker并预备好接奉下令。在新的终端窗口中键入以下下令:
  1. $ docker -v
复制代码
以上下令输出PC上安装的Docker版本:
  1. Docker version 17.12.0-ce-rc2, build f9cde63
复制代码
是时间开始运行容器了:
  1. $ docker container run alpine echo "Hello World"
复制代码
当您第一次运行上述下令时,你应该在终端窗口中看到与此类似的输出:


这很轻易,不是吗?实验再次运行雷同的下令:
  1. $ docker container run alpine echo "Hello World"
复制代码

运行上述下令的第二,第三或第n次,你应该只在终端中看到此输出:
  1. Hello World
复制代码
现在你已乐成运行容器,现在是时间分析毕竟发生了什么。查看以下下令:
  1. $ docker container run alpine echo "Hello World"
复制代码
该下令包含多个部门。起首,你有“docker”这个词。这是Docker下令行界面(CLI)的名称,用于与负责运行容器的Docker引擎举行交互。

接下来,您有单词“container”,它表现你正在利用的上下文。

再下一步是 现实要执行的下令run。

现在,还需要告诉Docker运行哪个容器。在这里,运行的是 alpine 容器。

最后,需要界说在容器运行时,应在容器内执行的进程或使命类型。这是下令的最后一部门,echo "Hello World"。

在容器内运行进程
既然已经了解了运行容器的下令的各个部门,请实验在另一个容器中运行差别的进程:
  1. $ docker container run centos ping -c 5 127.0.0.1
复制代码
输出如下:


在前面的示例中,利用的容器镜像是CentOS,而且在CentOS容器内执行的进程是ping -c 5 127.0.0.1,它将环回地点ping五次直到它制止。

第一行如下:
  1. Unable to find image 'centos:latest' locally
复制代码
这告诉你Docker没有在体系的当地缓存中找到名为centos:latest的镜像。因此,Docker知道它必须从存储容器的某个镜像源中提。

默认情况下,Docker情况配置为从hub.docker.com的Docker Hub中提取镜像。这由第二行表现如下:
  1. latest: Pulling from library/centos
复制代码

接下来的三行输出如下:
  1. 85432449fd0f: Pull completeDigest: sha256:3b1a65e9a05...Status:
复制代码
这告诉您Docker已乐成从Docker Hub中提取了镜像centos:latest。

后续的输出都是由容器内运行的进程天生的,这里运行的是ping工具。

你大概还注意到latest这个关键字出现了频频。每个映像都有一个版本(也称为标志),假如没有明白指定版本,则Docker会主动其视为最新版本。

假如在体系上再次运行这个容器,将不会输出之前的五行,因为Docker将在当地缓存容器映像,因此不必先下载它。试试是不是如许。

运行一个随机引用容器
为了运行随机语句容器,需要一个天生随机语句的算法。可以在此处[1]找到天生这些随机语句的API。
现在的目的是要在容器内运行一个进程,每5秒天生一条随机语句,而且输出到STDOUT:



按Ctrl + C制止脚本。这是输出:



每个响应都是一个JSON格式的字符串,包含引号,作者及其种别。
现在,让这个容器背景运行。为此,需要将前面的脚本缩成一行,并利用 /bin/sh -c “…” 来执行。Docker 的表达式如下:
  1. $ docker container run -d --name quotes alpine \  /bin/sh -c "while :; do wget -qO- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; done"
复制代码
上面的表达式,你利用了两个下令行参数,-d 和--name。-d告诉Docker以一个Linux守卫进程的方式运行容器。-name参数用于为容器指定显式名称。

假如您未指定显式容器名称,Docker将主动为容器分配一个随机但唯一的名称。这个名字将由一位着名科学家的名字和一个形容词组成。

诸如,“boring_borg”或“angry_goldberg”。相称幽默,不是吗?

一个告急的方面是容器名称必须是唯一的。确保引号容器已启动并正在运行:
  1. $ docker container ls -l
复制代码
前面输出的告急部门是STATUS列,此例中,它表现UP 16 seconds。这意味着容器已经启动并运行了16秒。

列表容器
随着时间的推移继续运行容器,你的体系大概会产生许多容器。要查找主机上当前正在运行的容器,可以利用container ls下令,如下所示:
  1. $ docker container ls
复制代码
这将列出全部当前运行的容器。
默认情况下,Docker输出七列,寄义如下:

假如要列出体系上界说的全部容器,可以利用下令行参数 -a 或 -all,如下所示:
  1. $ docker container ls -a
复制代码
这将列出任何状态的容器,无论是创建,运行照旧退出。

偶然,大概只想列出全部容器的ID。为此,你有 -q 参数:
  1. $ docker container ls -q
复制代码
你大概想知道这有什么用。这里有个例子:
  1. $ docker container rm -f $(docker container ls -a -q)
复制代码
上面的下令删除当前在体系上界说的全部容器,包括已制止的容器。rm下令代表删除,将在本教程中进一步解释。
在上一节中,您在list下令中利用了-l参数。实验利用Docker资助找出-l参数代表什么。您可以为list下令调用help,如下所示:
$ docker container ls -h
制止和启动容器
偶然,你大概需要暂时制止正在运行的容器。试试以下这个容器:
  1. $ docker container run -d --name quotes alpine \  /bin/sh -c "while :; do wget -qO- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; done"
复制代码
现在,你可以利用以下下令制止此容器:
  1. $ docker container stop quotes
复制代码

当你实验暂停容器时,大概会注意到它需要一段时间(大约10秒)才能执行完成。为什么会如许? Docker将 Linux SIGTERM信号发送到容器内运行的主进程。

在上面的下令中,容器的名称用于指定要制止的容器。也可以利用容器ID。

你如何得到容器ID?
有几种方法可以做到这一点。手动方法是列出全部正在运行的容器,并在列表中找到您要查找的容器。只需从那边复制其ID。
更主动化的方法是利用shell脚本和情况变量。比方,假如要获取引号容器的ID,这是一个示例:
  1. $ export CONTAINER_ID = $(docker container ls | grep quotes | awk '{print $1}')
复制代码
这里我们利用AWK获取第一个字段,即容器ID。现在,您可以在表达式中利用$CONTAINER_ID变量,而不是利用容器名称:
  1. $ docker container stop $CONTAINER_ID
复制代码
一旦制止容器后,其状态将更改为“已退出”。

你可以利用docker container start下令重新启动已制止的容器。

移除容器
运行docker container ls -a下令时,您可以看到许多处于“已退出”状态的容器。

假如您不再需要这些容器,最好将它们从内存中删除;否则,他们会占用名贵的资源。删除容器的下令如下:
  1. $ docker container rm <container ID>
复制代码
大概,也可以利用此下令:
  1. $ docker container rm <container name>
复制代码
偶然,无法删除正在运行的容器;假如要欺压删除,可以利用下令行参数 -f 或 -force。
容器化改变了行业运行方式,将维护成本低落了50%以上,并将产品上市时间紧缩了约90%。别的,相对于容器外运行,容器使应用步调更安全。
总结
以上就是这篇文章的全部内容了,盼望本文的内容对各人的学习大概工作具有肯定的参考学习代价,谢谢各人对脚本之家的支持。假如你想了解更多相关内容请查看下面相关链接

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作