【笔记版】docker常用指令---systemctl类、docker状态

启动:system start docker

查看状态:systemctl status docker

在这里插入图片描述

停止:systemctl stop docker

有警告:service关闭了,但是docker.socket仍响应

在这里插入图片描述

解决方法:systemctl stop docker.socket

再次查看:此时状态是inactive的,符合现状。

在这里插入图片描述

docker info 查看,没有server的描述

在这里插入图片描述

重启:systemctl restart docker

在这里插入图片描述

docker info再次查看,成功加载server的参数

项目Value
Containers5容器有5个
Running1正在运行有一个
Paused0没有暂停的容器
Stopped4停止了4个
Images5共5个镜像
Client: Docker Engine - Community
 Version:    25.0.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.12.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.24.5
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 5
  Running: 1
  Paused: 0
  Stopped: 4
 Images: 5
 Server Version: 25.0.2
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.5.0-18-generic
 Operating System: Ubuntu 22.04.3 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 16
 Total Memory: 27.09GiB
 Name: edgezh1
 ID: 35491377-f803-455d-a1bb-f8f546c51a34
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://82m9ar63.mirror.aliyuncs.com/
 Live Restore Enabled: false

docker常见状态

这些状态可以通过docker ps命令或者Docker API来查看。Docker容器可以处于以下几种状态:
🟡 已创建(Created):这意味着容器被成功地创建并且正等待分配到主机上进行调度。该状态通常用黄色或者深黄色表示。
🟢 运行中(Running):容器正在运行,并且正在执行其中的进程。
🔴 退出(Exited):容器的进程已经退出,并且容器也已经停止运行。
🟠 正在重启(Restarting):容器由于故障或设置自动重启选项而重新启动。
🔵 暂停(Paused):容器的执行状态被暂停,但是容器仍然存在。
🟣 正在移除(Removing):容器被删除时,会显示为“Removing”状态。
🟤 启动中(Starting):容器正在启动,但是尚未完全启动完成。

在这里插入图片描述

这些状态可以通过docker ps命令或者Docker API来查看。

以上只是一些常用的 Docker 启动类的命令,更多详细的命令可以参考 Docker 官方文档:https://docs.docker.com/

<think>好的,用户现在想了解装饰器的定义及其特点。先回顾之前的对话,用户之前询问了闭包的特点,我详细解释了闭包的定义、核心特点、作用以及缺点,并生成了相关问题。现在用户转向装饰器,这可能是因为装饰器在实现上常常利用闭包,所以用户可能在探索相关概念。 首先,需要明确装饰器的定义。装饰器是一种结构型设计模式,允许动态地向对象添加职责。在Python中,装饰器通常以函数或类的形式实现,用于修改或增强其他函数或类的行为,而不改变其原始代码。这里需要区分设计模式中的装饰器概念和Python语法中的装饰器,用户可能指的是后者。 接下来,装饰器的核心特点。根据用户之前的问题,闭包的特点包括内部函数访问外部变量、外部无法访问内部变量、内存长期占用等。装饰器同样会利用闭包来保持状态,所以需要强调装饰器如何利用闭包机制。此外,装饰器的特点还包括动态增强功能、代码复用、语法糖简化使用等。 用户可能需要具体的例子来理解装饰器的使用,比如日志记录、权限验证、性能测试等常见场景。同时,装饰器的优点和缺点也需要提到,比如提高代码复用性,但可能增加调试难度。 需要检查用户是否有更深层的需求。例如,用户可能在开发中遇到需要扩展函数功能的情况,而想了解如何高效实现。或者用户可能对Python中的@语法感到好奇,想了解其背后的原理。因此,在回答中需要覆盖装饰器的实现原理,特别是如何通过高阶函数和闭包来实现。 此外,用户之前的问题涉及闭包的内存泄漏问题,可能在装饰器部分也需要提到类似的风险,比如装饰器不当使用导致的内存问题,但通常装饰器正确使用时不会有大问题。 最后,生成的相关问题需要引导用户进一步探索,比如装饰器与闭包的关系、实际应用场景、如何编写带参数的装饰器等。这些问题可以帮助用户深化理解,并解决可能遇到的实际问题。 总结回答结构:先定义装饰器,再分点列出特点,结合代码示例,最后优缺点和相关问题。确保使用中文,行内公式用$...$,独立公式用$$...$$,但可能装饰器部分涉及较少数学公式,更多代码示例。同时注意引用之前的闭包内容,比如闭包在装饰器实现中的作用,保持知识的连贯性。</think>### 装饰器的定义及核心特点 --- #### 一、装饰器的定义 装饰器(Decorator)是一种**通过高阶函数或类动态修改其他函数或类行为的设计模式**。在 Python 中,装饰器以 `@decorator_name` 语法糖形式调用,本质上是将被装饰对象(函数/类)作为参数传递给装饰器函数,并返回增强后的新对象[^1][^2]。 例如,定义一个简单的装饰器: ```python def logger(func): def wrapper(*args, **kwargs): print(f"调用函数:{func.__name__}") return func(*args, **kwargs) return wrapper @logger def add(a, b): return a + b add(3, 5) # 输出:调用函数:add → 返回 8 ``` 此处 `logger` 是一个装饰器,为 `add` 函数添加了日志功能。 --- #### 二、装饰器的核心特点 1. **不修改原对象代码** 装饰器通过包裹(wrap)目标函数或类,无需侵入其内部实现即可扩展功能,符合“开放-封闭原则”[^3]。 2. **基于闭包实现** 装饰器依赖闭包特性保存外部函数的作用域(如 `logger` 保留对 `func` 的引用),实现功能增强[^4]。 3. **动态扩展功能** 装饰器可按需叠加,灵活组合不同功能。例如同时添加缓存和权限验证: ```python @cache @auth def get_data(): # ... ``` 4. **语法糖简化调用** `@decorator` 语法比手动调用 `func = decorator(func)` 更直观,降低代码冗余[^2]。 5. **支持类和函数装饰器** - **函数装饰器**:接收函数作为参数,返回新函数(如 `logger`)。 - **类装饰器**:接收类作为参数,返回修改后的类。 ```python def singleton(cls): instances = {} def get_instance(*args, **kwargs): if cls not in instances: instances[cls] = cls(*args, **kwargs) return instances[cls] return get_instance @singleton class Database: pass ``` --- #### 三、装饰器的典型应用场景 1. **日志记录与调试** 自动记录函数调用信息、参数和返回值。 2. **权限验证** 在函数执行前检查用户权限。 3. **性能测试** 统计函数执行时间: ```python def timer(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) print(f"耗时:{time.time() - start:.2f}s") return result return wrapper ``` 4. **缓存加速** 缓存函数结果,避免重复计算(如 `functools.lru_cache`)。 --- #### 四、装饰器的优缺点 | **优点** | **缺点** | |------------------------------|------------------------------| | 提高代码复用性 | 嵌套过多会降低可读性 | | 功能扩展灵活 | 调试时函数元信息可能被覆盖 | | 符合模块化设计原则 | 需谨慎处理装饰器执行顺序 | --- ### 相关问题 1. 如何编写支持参数的装饰器? 2. 装饰器与闭包的关系是什么? 3. 如何保留被装饰函数的元信息(如 `__name__`)? 4. 类装饰器和函数装饰器的实现有何区别? --- 如果需要进一步解释具体应用或实现细节,可以继续提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值