2025年docker容器的启动过程(docker容器怎么启动)

docker容器的启动过程(docker容器怎么启动)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p> 

讯享网

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动

1、新建并启动

所需要的命令主要为

例如,下面的命令输出一个 “Hello World”,之后终止容器:

讯享网

下面的命令则启动一个 bash 终端,允许用户进行交互:

 

在这里插入图片描述
讯享网

2、启动已终止容器

可以利用 命令,直接将一个已经终止(exited)的容器启动运行

在这里插入图片描述


更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 参数来实现

讯享网

在这里插入图片描述

此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 查看)

在这里插入图片描述

容器是否会长久运行,是和 指定的命令有关,和 参数无关


通过可以停止运行的容器:

在这里插入图片描述

容器在docker host中实际上是一个进程,docker stop命令本质上是向该进程发送一个SIGTERM信号。如果想快速停止容器,可使用命令,其作用是向容器进程发送SIGKILL信号

对于处于停止状态的容器,可以通过重新启动:

在这里插入图片描述

可以重启容器,其作用就是依次执行


有两种方法进入容器:

通过可以attach到容器启动命令的终端

 
讯享网

在这里插入图片描述

注:可通过Ctrl+p,然后Ctrl+q组合键退出attach终端

通过docker exec进入相同的容器

 

以交互模式打开pseudo-TTY,执行bash,其结果就是打开了一个bash终端。进入到容器中,容器的hostname就是其“短ID”

可以像在普通Linux中一样执行命令。显示了容器启动进程while以及当前的bash进程

在这里插入图片描述

attach与exec主要区别如下:

  • attach直接进入容器启动命令的终端,不会启动新的进程
  • exec则是在容器中打开新的终端,并且可以启动新的进程
  • 如果想直接在终端中查看启动命令的输出,用attach;其他情况使用exec

按用途容器大致可分为两类:服务类容器和工具类的容器

服务类容器以daemon的形式运行,对外提供服务,比如Web Server、数据库等。通过 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过进入容器

工具类容器通常能给我们提供一个临时的工作环境,通常以方式运行


有时我们只是希望让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者dcoker host需要使用CPU,这时可以执行

在这里插入图片描述

处于暂停状态的容器不会占用CPU资源,直到通过恢复运行

在这里插入图片描述


是删除容器,而是删除镜像

在这里插入图片描述

一次可以指定多个容器,如果希望批量删除所有已经退出的容器,可以执行如下命令

讯享网

如果要删除一个运行中的容器,可以添加 参数。Docker 会发送 SIGKILL 信号给容器


一个docker host上会运行若干容器,每个容器都需要CPU、内存和IO资源。对于KVM、VMware等虚拟化技术,用户可以控制分配多少CPU、内存资源给每个虚拟机。对于容器,Docker也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个host的性能

Docker通过下面两组参数来控制容器内存的使用量。

  • -m或 --memory:设置内存的使用限额,例如100MB,2GB
  • –memory-swap:设置内存+swap的使用限额
 

其含义是允许该容器最多使用200MB的内存和100MB的swap。默认情况下,上面两组参数为 -1,即对容器内存和swap的使用没有限制

Docker可以通过 或 设置容器使用CPU的权重。如果不指定,默认值为1024

通过可以设置容器使用CPU的优先级:

比如在host中启动了两个容器:

讯享网

containerA的cpu share 1024,是containerB的两倍。当两个容器都需要CPU资源时,containerA可以得到的CPU是containerB的两倍

Block IO是另一种可以限制容器使用的资源。Block IO指的是磁盘的读写,docker可通过设置权重、限制bps和iops的方式控制容器读写磁盘的带宽

默认情况下,所有容器能平等地读写磁盘,可以通过设置 参数来改变容器block IO的优先级

在下面的例子中,containerA读写磁盘的带宽是containerB的两倍

 

bps是byte per second,每秒读写的数据量。iops是io per second,每秒IO的次数。可通过以下参数控制容器的bps和iops:

● –device-read-bps:限制读某个设备的bps。
● –device-write-bps:限制写某个设备的bps。
● –device-read-iops:限制读某个设备的iops。
● –device-write-iops:限制写某个设备的iops。

下面这个例子限制容器写 /dev/sda的速率为30 MB/s:

讯享网

1、导出容器

如果要导出本地某个容器,可以使用 命令

 

这样将导出容器快照到本地文件

2、导入容器快照

可以使用 从容器快照文件中再导入为镜像,例如

讯享网

此外,也可以通过指定 URL 或者某个目录来导入,例如:

 

小讯
上一篇 2025-06-12 22:06
下一篇 2025-06-06 22:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/185349.html