docker容器生命周期管理命令

文章目录

  • 前言
  • 1、docker create
    • 2、docker run
    • 2.1、常用选项
    • 2.2、系统
    • 2.3、网络
    • 2.4、健康检查
  • 3、docker start/stop/restart
  • 4、docker kill
  • 5、docker rm
  • 6、docker pause/unpause
  • 总结

前言

在云原生时代,Docker已成为必不可少的容器管理工具。通过掌握Docker常用的容器管理命令,可以提高应用部署和运维的效率。本文将揭秘云原生时代必备的Docker容器管理命令,包括容器的创建、启动、停止、删除以及日常运维中常用的命令和技巧。通过学习本文,读者将能够轻松应对云原生时代的容器管理挑战,提高工作效率,实现更高质量的应用部署和运维管理。

1、docker create

创建一个新的容器但不启动它。语法同docker run。

docker create  [OPTIONS] CONTAINER

示例:
在一个终端执行docker create,在另一个终端执行docker events。

# 第一个终端
king@king-server:~$ docker create nginx
0f267601d5c102d6f8a894d2a5f719803d3f7010cf1b380cce4ff92396696542# 第二个终端
king@king-server:~$ docker events
2024-01-26T13:26:57.617217238Z container create 0f267601d5c102d6f8a894d2a5f719803d3f7010cf1b380cce4ff92396696542(image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=eager_meitner)

2、docker run

创建一个新的容器并运行一个命令。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

2.1、常用选项

参见docker run常用选项

2.2、系统

  • –cap-add:添加linux功能
  • –cap-drop:删除linux功能
# --cap-add=ALL表示给容器赋予所有的权限,即允许容器内的进程拥有宿主机上的所有权限。
# --cap-drop=MKNOD 表示从容器中剥夺创建设备节点的能力。这意味着容器内的进程将无法创建设备节点,
# 如 /dev/null、 /dev/zero 等
docker run --cap-add=ALL --cap-drop=MKNOD ...
docker run --cap-add=SYS_ADMIN ...
docker run --cap-add=CAP_SYS_ADMIN ...
  • –isolation:指定容器的隔离技术。

linux系统:只支持default,即linux命名空间隔离技术。
windows系统:default:表示使用docker守护进程配置的选项,否则默认使用process选项。
process:命名空间隔离
hyperv:基于Hyper-V 管理程序基于分区的隔离

  • –platform:设置平台,如果服务器支持多个平台。
  • –runtime:用于此容器使用的运行时。
  • –security-opt:通过指定–security opt标志来覆盖每个容器的默认标签方案。
  • –shm-size:设置/dev/shm设备的大小,/dev/shm是一个基于内存的临时文件系统。
  • –storage-opt:容器的存储驱动程序选项
  • –sysctl:设置系统参数,默认 map[]。
  • –ulimit:设置Ulimit选项,默认[]。

2.3、网络

  • –ip:通过该参数,可以在创建容器时手动指定容器使用的ip4地址。
  • –ip6:ip6地址。
  • –dns 设置自定义dns服务器,将修改容器中 /etc/resolv.conf 文件。
  • –dns-option:设置DNS选项,将修改容器中 /etc/resolv.conf 文件。
  • –dns-search:设置自定义DNS搜索域名,将修改容器中 /etc/resolv.conf 文件。
  • –link-local-ip:设置一个或多个容器的以太网设备的链路本地IPv4/IPv6地址。
  • –mac-address:容器Mac地址。
  • –network:将容器加入到指定网络。
  • –network-alias:为容器添加网络范围的别名。

2.4、健康检查

  • –health-cmd:健康检查命令。
  • –health-interval:健康检查频率(ms|s|m|h),默认0s。
  • –health-retries:健康检查重试次数,连续失败指定次数则判断为不健康。
  • –health-start-period:设置启动容器的初始化时间,在此期间的健康检查不作为参考依据,(ms|s|m|h),默认0s。
  • –health-timeout:每一次检查超时时间(ms|s|m|h),默认0s。
  • –no-healthcheck:禁用健康检查。

3、docker start/stop/restart

  • docker start :启动一个或多个已经被停止的容器。
  • docker stop :停止一个运行中的容器。
  • docker restart :重启容器。

示例:

docker restart mynginx
docker stop mynginx
docker start mynginx

4、docker kill

杀掉一个运行中的容器。

docker kill [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:
-s :向容器发送一个信号。
在这里插入图片描述
示例:

docker kill -s KILL mynginx
docker kill -s TERM mynginx

如果容器终止时的状态对用户而言很重要,用户可能会想要了解docker kill 和docker stop之间的区别。docker kill 的行为和标准的kill 命令行程序并不相同。kill 程序的默认工作方式是向指定的进程发送
TERM信号(即信号值为15)。这个信号表示程序应该被终止,但是不要强迫程序终止。当这个信号被处理时,大多数程序将执行某种清理工作,但是该程序也可以执行其他操作,包括忽略该信号。
而docker kill 对正在运行的程序使用的是KILL信号,这使得该进程没办法处理终止过程。这就意味着一些诸如包含运行进程ID之类的文件可能会残留在文件系统中。根据应该用程序管理状态的能力,如果再次启动容器,这可能会也可能不会造成问题。docker stop 命令则像kill 命令那样工作,发送的是一个TERM型号。

5、docker rm

删除一个或多个容器。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。

示例:
删除所有的容器。

docker rm `docker ps -f status=exited -q`

6、docker pause/unpause

  • docker pause :暂停容器中所有的进程。
  • docker unpause :恢复容器中所有的进程。
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]

总结

(1)docker的create命令和run命令区别在于create只创建容器,而run命令除了创建容器还会连接网络和启动容器;start命令会连接网络和启动容器。即docker run = docker create + docker start。
(2)docker stop发送的信号值默认是15,但是nginx构建的时候会指定为3;docker kill发送的信号值是9,强制删除。
(3)docker run使用最多的参数:

  • -d, --detach:后台运行容器并打印容器id。
  • -i, --interactive:保持标准输入设备处于打开状态。
  • -t, --tty:分配一个伪终端设备。
  • –rm:当容器退出时,自动删除容器。
  • -p, --publish:发布容器端口和主机端口的映射。
  • -P, --publish-all:将所有暴露的端口发布到主机随机端口。
  • –entrypoint:覆盖镜像默认程序入口。
  • –name:指定容器名称。
  • –health-cmd:健康检查命令。

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

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

相关文章

2. MySQL 多实例

重点&#xff1a; MySQL 的 三种安装方式&#xff1a;包安装&#xff0c;二进制安装&#xff0c;源码编译安装。 MySQL 的 基本使用 MySQL 多实例 DDLcreate alter drop DML insert update delete DQL select 2.5&#xff09;通用 二进制格式安装 MySQL 2.5.1&#xff…

立创EDA学习:设计收尾工作

布线整理 ShiftM&#xff0c;关闭铺铜显示 调整结束后再使用快捷键”ShiftM“打开铺铜 过孔 在空白区域加上一些GND过孔&#xff0c;连接顶层与底层的铺铜。放置好”过孔“后&#xff0c;隐藏铺铜&#xff0c;观察刚才放置的过孔有没有妨碍到其他器件 调整铺铜 先打开铺铜区&…

用可视化案例讲Rust编程4. 用泛型和特性实现自适配shapefile的读取

本节已经涉及Rust学习曲线上的一个大坑&#xff1a;泛型和特性了&#xff0c;属于语言的深水区&#xff0c;如果初学者&#xff0c;建议看一眼知道有这个功能即可。 如果我们立足于功能实现&#xff0c;那么做到像上一节那样就可以了&#xff0c;从原理上来说&#xff0c;每个…

TCP 状态转换以及半关闭

TCP 状态转换&#xff1a; 上图中还没有进行握手的时候状态是关闭的。 三次握手状态的改变&#xff1a; 客户端发起握手。 调用 connect() 函数时状态转化为&#xff1a;SYN_SENT。调用 listen() 函数时状态转换为&#xff1a;LISTEN。ESTABLISHED是被连接的状态。 四次挥手…

C++核心编程:C++ 中的引用 笔记

2.引用 2.1 引用的基本使用 - 作用&#xff1a;给变量起别名 - 语法&#xff1a;数据类型 &别名 原名 #include<iostream> using namespace std; int main() {// 引用基本语法// 数据类型 &别名 原名int a 10;// 创建引用int &ref_a a;cout<<&qu…

代码随想录刷题笔记 DAY15 | 翻转二叉树 No.226 | 对称二叉树 No.101

Day 15 01. 翻转二叉树&#xff08;No. 226&#xff09; 题目链接 代码随想录题解 1.1 题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9…

PCB制板基础知识

一、PCB概念 PCB&#xff08;PrintedCircuitBoard&#xff09;&#xff0c;中文名称为印制电路板&#xff0c;又称印刷电路板、印刷线路板&#xff0c;是重要的电子部件&#xff0c;是电子元器件的支撑体&#xff0c;是电子元器件电气连接的提供者。由于它是采用电子印刷术制作…

使用vs2022将.net8的应用程序发布为一个单独文件

在使用.NetCore3.1时&#xff0c;可以通过设置以下工程配置文本来将项目发布为一个单独的应用程序文件&#xff1a; <Project Sdk"Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><…

Python open函数

在Python编程中&#xff0c;open()函数是一个重要的文件操作函数&#xff0c;用于打开文件并进行读取、写入、追加等操作。本文将深入探讨open()函数的用法、语法、文件模式、示例代码&#xff0c;并探讨其在实际编程中的应用场景。 什么是open()函数&#xff1f; open()函数…

机房及设备安全智慧监管AI+视频方案的设计和应用

一、背景分析 随着互联网的迅猛发展&#xff0c;机房及其配套设施的数量持续攀升&#xff0c;它们的运行状况对于企业运营效率和服务质量的影响日益显著。作为企业信息化的基石&#xff0c;机房的安全监测与管理的重要性不容忽视。它不仅关乎企业的稳定运营&#xff0c;同时也…

《WebKit技术内幕》学习之十五(3): Web前端之未来

3 Web应用和Web运行环境 3.1 Web应用 HTML5提供了强大的能力&#xff0c;而不是支持Web网页这么简单。就目前而言&#xff0c;它已经初步提供了支持Web网页向Web应用方向发展的能力。相对于本地应用&#xff08;Native Application&#xff09;&#xff0c;Web前端领域也能够…

Android Gradle Sync Task list is empty

问题 有时候 Android studio 打开项目&#xff0c;可能会遇到构建没有明显报错&#xff0c;但是 Gradle 却没有 Task list&#xff0c;或者 Task list 不完整只有零星几个配置项。连打包任务都没有&#xff0c;我怎么打包&#xff01; 异常情况&#xff1a; 正常情况&#xf…