nerdctl 命令参考

🐳 = 兼容 Docker

🤓 = nerdctl 专用

🟦 = 已启用 Windows

未列出的dockerCLI 标志表示 CLI 中尚未实现nerdctl。这并不一定意味着 containerd 中缺少相应的功能。

容器管理

🐳🟦nerdctl 运行

在新容器中运行命令。

用法:nerdctl run [OPTIONS] IMAGE [COMMAND] [ARG...]

🤓ipfs://前缀可用于IMAGE从 IPFS 中提取它。ipfs.md详情请参阅。:nerd_face:oci-archive://前缀可用于IMAGE指定 OCI 格式 tarball 的本地文件系统路径。

基本标志:

  • 🐳 -a, --attach:附加 STDIN、STDOUT 或 STDERR
  • 🐳🟦 -i, --interactive:即使未连接也要保持 STDIN 开放”
  • 🐳🟦 -t, --tty:分配一个伪 TTY
    • ⚠️WIP:目前-t与以下冲突-d
  • 🐳 -sig-proxy:代理接收信号到进程(默认为 true)
  • 🐳🟦 -d, --detach:在后台运行容器并打印容器 ID
  • 🐳 --restart=(no|always|on-failure|unless-stopped):容器退出时应用重新启动策略
    • 默认值: “否”
    • 始终:如果容器停止,则始终重新启动容器。
    • on-failure[:max-retries]:仅当容器以非零退出状态退出时才重新启动。(可选)使用 :max-retries 选项限制尝试重新启动容器的次数。
    • 除非停止:除非容器停止,否则始终重新启动容器。
  • 🐳 --rm:容器退出时自动移除
  • 🐳 --pull=(always|missing|never):运行前拉取镜像
    • 默认值:“缺失”
  • 🐳 -q, --quiet:抑制拉动输出
  • 🐳 --pid=(host|container:<container>):要使用的 PID 命名空间
  • 🐳 --uts=(host):要使用的 UTS 命名空间
  • 🐳 --stop-signal:停止容器的信号(默认“SIGTERM”)
  • 🐳 --stop-timeout:停止容器的超时时间(以秒为单位)
  • 🐳 --detach-keys:覆盖默认分离键

平台标志:

  • 🐳 --platform=(amd64|arm64|...):设置平台

初始化进程标志:

  • 🐳 --init:在容器内运行一个转发信号并获取进程的 init。
  • 🤓 --init-binary=<binary-name>:要使用的自定义 init 二进制文件。我们建议您使用Docker 项目中使用的tini二进制文件来获得相同的行为。请确保您的 中存在该二进制文件PATH
    • 默认:tini

隔离标志:

  • 🐳 🟦 🤓 --isolation=(default|process|host|hyperv):在 Windows 上用于更改进程隔离级别。将使用在containerd 配置default中配置的运行时选项,默认情况下该选项在 containerd 中。运行进程隔离容器。 运行主机进程容器。主机进程容器从 containerd 进程继承权限,除非指定,否则将从指定的用户启动,并且指定的用户必须存在于主机上。 需要 Containerd 1.7+。运行基于 Hyper-V 虚拟机管理程序分区的隔离容器。未在 Linux 上实施。default_runtimeprocessprocesshost--userhosthyperv

网络标志:

  • 🐳 --net, --network=(bridge|host|none|container:<container>|ns:<path>|<CNI>):将容器连接到网络。
    • 默认值:“bridge”
    • container:<name|id>:重用另一个容器的网络堆栈,必须预先创建容器。
    • 🤓 ns:<path>:在现有的网络命名空间内运行
    • 🤓 与 Docker 不同,此标志可以多次指定(--net foo --net bar
  • 🐳 -p, --publish:将容器的端口发布到主机
  • 🐳 --dns:设置自定义 DNS 服务器
  • 🐳 --dns-search:设置自定义 DNS 搜索域
  • 🐳 --dns-opt, --dns-option:设置 DNS 选项
  • 🐳 -h, --hostname:容器主机名
  • 🐳 --add-host:添加自定义主机到 IP 映射 (host:ip)。ip可以是特殊字符串host-gateway
  • 它将被解析为host-gateway-ipnerdctl.toml 或全局标志。
  • 🐳 --ip:要使用的特定静态 IP 地址。请注意,与 docker 不同,nerdctl 允许使用默认桥接网络指定它。
  • 🐳 --ip6:要使用的特定静态 IP6 地址。应与用户网络一起使用
  • 🐳 --mac-address:要使用的特定 MAC 地址。请注意,它不会检查手动指定的 MAC 地址是否唯一。支持网络类型bridgemacvlan

资源标志:

  • 🐳 --cpus:CPU 数量
  • 🐳 --cpu-quota:限制 CPU CFS(完全公平调度程序)配额
  • 🐳 --cpu-period:限制 CPU CFS(完全公平调度程序)周期
  • 🐳 --cpu-shares:CPU 份额(相对权重)
  • 🐳 --cpuset-cpus:允许执行的 CPU (0-3, 0,1)
  • 🐳 --cpuset-mems:允许执行的内存节点(MEM)(0-3、0、1)。仅在 NUMA 系统上有效
  • 🐳 --memory:内存限制
  • 🐳 --memory-reservation:内存软限制
  • 🐳 --memory-swap:交换限制等于内存加上交换:“-1”以启用无限交换
  • 🐳 --memory-swappiness:调整容器内存交换量(0 到 100)(默认 -1)
  • 🐳 --kernel-memory:内核内存限制(已弃用)
  • 🐳 --oom-kill-disable:禁用 OOM Killer
  • 🐳 --oom-score-adj:调整容器的 OOM 偏好设置(-1000 到 1000,无根:100 到 1000)
  • 🐳 --pids-limit:调整容器 pid 限制
  • 🤓 --cgroup-conf:配置 cgroup v2(key=value)
  • 🐳 --blkio-weight:阻止 IO(相对权重),介于 10 到 1000 之间,或 0 表示禁用(默认为 0)
  • 🐳 --cgroupns=(host|private):要使用的 Cgroup 命名空间
    • 默认值:cgroup v2 主机上为“private”,cgroup v1 主机上为“host”
  • 🐳 --cgroup-parent:容器的可选父 cgroup
  • 🐳🟦 --device:向容器添加主机设备

英特尔 RDT 标志:

  • 🤓 --rdt-class=CLASS:与容器关联的 RDT 类(或 CLOS)的名称

用户标志:

  • 🐳 🟦 -u, --user:用户名或 UID(格式:<name|uid>[:<group|gid>])
  • 🤓 --umask:设置容器内的 umask。默认为 0022。对应于 Podman CLI。
  • 🐳 --group-add:添加其他群组以供加入

安全标志:

  • 🐳 --security-opt seccomp=<PROFILE_JSON_FILE>:指定自定义 seccomp 配置文件
  • 🐳 --security-opt apparmor=<PROFILE>:指定自定义 AppArmor 配置文件
  • 🐳 --security-opt no-new-privileges:禁止特权升级,例如 setuid 和文件功能
  • 🐳 --security-opt systempaths=unconfined:关闭容器的系统路径(屏蔽路径、只读路径)的限制
  • 🤓 --security-opt privileged-without-host-devices:不要将主机设备传递给特权容器
  • 🐳 --cap-add=<CAP>:添加 Linux 功能
  • 🐳 --cap-drop=<CAP>:放弃 Linux 功能
  • 🐳 --privileged:授予此容器扩展权限
  • 🤓 --systemd=(true|false|always):启用 systemd 兼容性(默认值:false)。
    • 默认值:”false”
    • true :如果入口点可执行文件与以下路径之一匹配,则启用 systemd 兼容性:
      • /sbin/init
      • /usr/sbin/init
      • /usr/local/sbin/init
    • 始终:始终启用 systemd 兼容性

对应于 Podman CLI。

运行时标志:

  • 🐳 --runtime:此容器使用的运行时,例如“crun”或“io.containerd.runsc.v1”。
  • 🐳 --sysctl:Sysctl 选项,例如“net.ipv4.ip_forward=1”

卷标志:

  • 🐳🟦 -v, --volume <SRC>:<DST>[:<OPT>]:绑定安装卷,例如,-v /mnt:/mnt:rro,rprivate
    • 🐳 选项rw:读/写(可写时)
    • 🐳 option ro:非递归只读
    • 🤓 option rro:递归只读。应与 结合使用rprivate。例如,-v /mnt:/mnt:rro,rprivate使子级/mnt/usb也变为只读。需要 kernel >= 5.12,并且 crun >= 1.4 或 runc >= 1.1 (PR #3272 )。使用较旧的 runc,rro只需按 工作即可ro
    • 🐳 选项sharedslaveprivate:非递归“共享” / “从属” / “私有” 传播
    • 🐳 选项rsharedrslaverprivate:递归“共享” / “从属” / “私有” 传播
    • 🤓 option bind:非递归绑定挂载
    • 🤓 option rbind: 递归绑定挂载
  • 🐳 --tmpfs:挂载 tmpfs 目录,例如--tmpfs /tmp:size=64m,exec
  • 🐳 --mount:将文件系统挂载附加到容器。由多个键值对组成,以逗号分隔,每个键值对由一个<key>=<value>元组组成。例如-- mount type=bind,source=/src,target=/app,bind-propagation=shared
    • 🐳 type:当前支持的挂载类型为bindvolumetmpfs。如果未指定,则默认类型将设置为volume。即,--mount src=vol-1,dst=/app,readonlyequals--mount type=volume,src=vol-1,dst=/app,readonly
    • 常用选项:
      • 🐳 srcsource:安装绑定和卷的源规范。绑定时必需。
      • 🐳 dstdestinationtarget:挂载目的地规范。
      • 🐳 readonly,,,ro:文件系统权限rwrro
    • 特定于的选项bind
      • 🐳 bind-propagationshared,,,,,,或(slave默认)。privatersharedrslaverprivate
      • 🐳 bind-nonrecursivetruefalse(默认)。如果设置为 true,则子挂载不会递归绑定挂载。此选项对于只读绑定挂载很有用。
      • 未实现的选项:consistency
    • 特定于的选项tmpfs
      • 🐳 tmpfs-size:tmpfs 挂载的大小(以字节为单位)。默认情况下不受限制。
      • 🐳 :八进制tmpfs-mode的 tmpfs 文件模式。默认为或全球可写。1777
    • 特定于的选项volume
      • 未实现的选项:volume-nocopy,,,volume-labelvolume-drivervolume-opt
  • 🐳 --volumes-from:从指定容器挂载卷,例如“--volumes-from my-container”。

Rootfs 标志:

  • 🐳 --read-only:将容器的根文件系统挂载为只读
  • 🤓 --rootfs:第一个参数不是镜像,而是解压容器的 rootfs。对应于 Podman CLI。

环境标志:

  • 🐳🟦 --entrypoint:覆盖图像的默认 ENTRYPOINT
  • 🐳🟦 -w, --workdir:容器内的工作目录
  • 🐳🟦 -e, --env:设置环境变量
  • 🐳🟦 --env-file:从文件设置环境变量

元数据标志:

  • 🐳🟦 --name:为容器指定名称
  • 🐳 🟦 -l, --label:在容器上设置元数据(自 nerdctl v2.0 以来未通过 OCI 运行时,但有一个例外nerdctl/bypass4netns
  • 🐳🟦 --label-file:读取一行分隔的标签文件
  • 🐳🟦 --annotation:向容器添加注释(传递到 OCI 运行时)
  • 🐳🟦 --cidfile:将容器 ID 写入文件
  • 🤓 --pidfile:写入任务 pid 的文件路径。CLI 语法符合 Podman 约定。

记录标志:

  • 🐳 --log-driver=(json-file|journald|fluentd|syslog):容器的日志驱动程序(默认json-file)。
    • 🐳 --log-driver=json-file:日志格式为 JSON。nerdctl 的默认日志记录驱动程序。
      • 日志驱动程序json-file支持以下日志选项:
        • 🐳 --log-opt=max-size=<MAX-SIZE>:滚动前圆木的最大尺寸。正整数加上表示计量单位(k、m 或 g)的修饰符。默认为无限制。
        • 🐳 --log-opt=max-file=<MAX-FILE>:可存在的最大日志文件数。如果滚动日志创建了多余的文件,则删除最旧的文件。仅在max-size同时设置时才有效。正整数。默认为 1。
        • 🤓 --log-opt=log-path=<LOG-PATH>:日志写入的日志路径。如果不存在,将创建该路径。如果日志文件存在,则将旧文件重命名为<LOG-PATH>.1
          • 默认:<data-root>/<containerd-socket-hash>/<namespace>/<container-id>/<container-id>-json.log
          • 例子:/var/lib/nerdctl/1935db59/containers/default/<container-id>/<container-id>-json.log
    • 🐳 --log-driver=journald:将日志消息写入journaldjournald守护进程必须在主机上运行。
      • 🐳 --log-opt=tag=<TEMPLATE>:指定模板来设置SYSLOG_IDENTIFIERjournald 日志中的值。
    • 🐳 --log-driver=fluentd:将日志消息写入fluentdfluentd守护进程必须在主机上运行。
      • 日志驱动程序fluentd支持以下日志选项:
        • 🐳 :支持守护进程--log-opt=fluentd-address=<ADDRESS>的地址、tcp(默认)和 unix 套接字。fluentd
        • 🐳 --log-opt=fluentd-async=<true|false>:为 fluentd 启用异步模式。默认值为 false。
        • 🐳 --log-opt=fluentd-buffer-limit=<LIMIT>:fluentd 的缓冲区限制。如果缓冲区已满,记录日志的调用将失败。默认值为 8192。(https://github.com/fluent/fluent-logger-golang/tree/master#bufferlimit
        • 🐳 --log-opt=fluentd-retry-wait=<1s|1ms>:重试将日志发送到 fluentd 之前等待的时间。默认值为 1 秒。
        • 🐳 --log-opt=fluentd-max-retries=<1>:向 fluentd 发送日志的最大重试次数。默认值为 MaxInt32。
        • 🐳 --log-opt=fluentd-sub-second-precision=<true|false>:为 fluentd 启用亚秒级精度。默认值为 false。
        • 🤓 --log-opt=fluentd-async-reconnect-interval=<1s|1ms>:重试重新连接 fluentd 之前等待的时间。默认值为 0 秒。
        • 🤓 --log-opt=fluentd-request-ack=<true|false>:为 fluentd 启用请求确认。默认值为 false。
    • 🐳 --log-driver=syslog:将日志消息写入syslog。 syslog守护进程必须在主机或远程计算机上运行。
      • 日志驱动程序syslog支持以下日志选项:
        • 🐳 --log-opt=syslog-address=<ADDRESS>:外部服务器的地址syslog。URI 说明符可以是 tcp|udp|tcp+tls]://host:portunix://pathunixgram://path。如果传输是tcpudptcp+tls,则默认端口为 514
        • 🐳 --log-opt=syslog-facility=<FACILITY>syslog要使用的工具。可以是任何有效 syslog 工具的编号或名称。请参阅 syslog 文档
        • 🐳 --log-opt=syslog-tls-ca-cert=<VALUE>:CA 签名的信任证书的绝对路径。如果地址协议不是,则忽略tcp+tls
        • 🐳 --log-opt=syslog-tls-cert=<VALUE>:TLS 证书文件的绝对路径。如果地址协议不是,则忽略 tcp+tls
        • 🐳 --log-opt=syslog-tls-key=<VALUE>:TLS 密钥文件的绝对路径。如果地址协议不是,则忽略tcp+tls
        • 🐳 --log-opt=syslog-tls-skip-verify=<VALUE>:如果设置为true,则连接到守护进程时将跳过 TLS 验证。 如果地址协议不是 ,则忽略tcp+tls
        • 🐳 --log-opt=syslog-format=<VALUE>syslog要使用的消息格式。如果未指定,则使用本地 UNIX 系统日志格式,不指定主机名。指定rfc3164RFC-3164 兼容格式、rfc5424RFC-5424 兼容格式或 rfc5424micro具有微秒时间戳分辨率的 RFC-5424 兼容格式。
        • 🐳 :附加到消息中--log-opt=tag=<VALUE>的字符串 。默认情况下,nerdctl 使用容器 ID 的前 12 个字符来标记日志消息。APP-NAMEsyslog
    • 🤓 接受 LogURI,即 containerd shim 记录器。必须为 URI 指定方案。示例: 。可以在 ( https://github.com/containerd/containerd/tree/dbef1d56d7ebc05bc4553d72c419ed5ce025b05d/runtime/v2#logging )nerdctl run -d --log-driver binary:///usr/bin/ctr-journald-shim docker.io/library/hello-world:latest找到 shim 记录器的实现

共享内存标志:

  • 🐳 --ipc=(host|private|shareable|container:<container>):要使用和挂载的 IPC 命名空间/dev/shm。默认值:“private”。仅在 Linux 上实现。
  • 🐳 --shm-size:尺寸/dev/shm

GPU 标志:

  • 🐳 --gpus:要添加到容器的 GPU 设备(“all”表示传递所有 GPU)。./gpu.md详情请参阅。

Ulimit 标志:

  • 🐳 --ulimit:设置 ulimit

验证标志:

  • 🤓 --verify:验证图像(无|共同签名|符号)。详情请参阅./cosign.md和。./notation.md
  • 🤓 --cosign-key:公钥文件、KMS、URI 或 Kubernetes Secret 的路径--verify=cosign
  • 🤓 --cosign-certificate-identity:--verify=cosign 的有效 Fulcio 证书中预期的身份。有效值包括电子邮件地址、DNS 名称、IP 地址和 URI。必须为无密钥流设置 --cosign-certificate-identity 或 --cosign-certificate-identity-regexp
  • 🤓 : --verify=cosign 的 --cosign-certificate-identity 的正则表达式替代方案。接受https://golang.org/s/re2syntax--cosign-certificate-identity-regexp中描述的 Go 正则表达式语法。必须为无密钥流设置 --cosign-certificate-identity 或 --cosign-certificate-identity-regexp
  • 🤓 --cosign-certificate-oidc-issuer: --verify=cosign 的有效 Fulcio 证书中预期的 OIDC 发行者,例如https://token.actions.githubusercontent.comhttps://oauth2.sigstore.dev/auth。必须为无密钥流设置 --cosign-certificate-oidc-issuer 或 --cosign-certificate-oidc-issuer-regexp
  • 🤓 --cosign-certificate-oidc-issuer-regexp: --verify=cosign, 的 --certificate-oidc-issuer 的正则表达式替代方案。接受https://golang.org/s/re2syntax中描述的 Go 正则表达式语法。必须为无密钥流设置 --cosign-certificate-oidc-issuer 或 --cosign-certificate-oidc-issuer-regexp

IPFS标志:

  • 🤓 --ipfs-address:IPFS API 的多地址($IPFS_PATH如果定义则默认使用环境变量或本地目录~/.ipfs

未实现 的标志docker run: --blkio-weight-device,,,,,,,,,,,,,,,​​--cpu-rt-*--device-*--disable-content-trust--domainname--expose--health-*--isolation--no-healthcheck--link*--publish-all--storage-opt--userns--volume-driver

🐳🟦nerdctl exec

在正在运行的容器中运行命令。

用法:nerdctl exec [OPTIONS] CONTAINER COMMAND [ARG...]

标志:

  • 🐳 -i, --interactive:即使未连接,也保持 STDIN 开放
  • 🐳 -t, --tty:分配一个伪 TTY
    • ⚠️WIP:目前-t与以下冲突-d
  • 🐳 -d, --detach:分离模式:在后台运行命令
  • 🐳 -w, --workdir:容器内的工作目录
  • 🐳 -e, --env:设置环境变量
  • 🐳 --env-file:从文件设置环境变量
  • 🐳 --privileged:授予命令扩展权限
  • 🐳 -u, --user:用户名或 UID(格式:<name|uid>[:<group|gid>])

未实现的docker exec标志:--detach-keys

🐳🟦nerdctl创建

创建一个新容器。

用法:nerdctl create [OPTIONS] IMAGE [COMMAND] [ARG...]

🤓ipfs://前缀可用于IMAGE从 IPFS 中提取它。ipfs.md详情请参阅。:nerd_face:oci-archive://前缀可用于IMAGE指定 OCI 格式 tarball 的本地文件系统路径。

nerdctl create命令类似于,nerdctl run -d但容器从未启动。然后,您可以随时使用该nerdctl start <container_id>命令启动容器。

🐳 nerdctl cp

在正在运行的容器和本地文件系统之间复制文件/文件夹

用法:

  • nerdctl cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
  • nerdctl cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

⚠️ nerdctl cp仅设计用于受信任的协作容器。nerdctl cp不支持与不受信任或恶意的容器一起使用,并且可能无法提供针对意外行为的保护。

标志:

  • 🐳-L, --follow-link始终遵循 SRC_PATH 中的符号链接。

未实现的docker cp标志:--archive

🐳🟦nerdctl ps

列出容器。

用法:nerdctl ps [OPTIONS]

标志:

  • 🐳 -a, --all:显示所有容器(默认显示正在运行)
  • 🐳 --no-trunc:不要截断输出
  • 🐳 -q, --quiet:仅显示容器 ID
  • 🐳 -s, --size:显示文件总大小
  • 🐳 --format:使用给定的 Go 模板格式化输出
    • 🐳 --format=table(默认):表格
    • 🐳 --format='{{json .}}':JSON
    • 🤓 --format=wide:宽桌
    • 🤓 --format=json:别名--format='{{json .}}'
  • 🐳 -n, --last:显示最后创建的 n 个容器(包括所有状态)
  • 🐳 -l, --latest:显示最新创建的容器(包括所有状态)
  • 🐳 -f, --filter:根据给定条件过滤容器。指定条件“status”时,它会过滤所有容器
    • 🐳 --filter id=<value>:容器的 ID。支持完整 ID 和截断 ID
    • 🐳 --filter name=<value>:容器的名称
    • 🐳 --filter label=<key>=<value>:任意字符串,可以是键或键值对
    • 🐳 --filter exited=<value>:容器的退出代码。仅适用于 --all
    • 🐳 --filter status=<value>: 之一created, running, paused, stopped, exited, pausing, unknown。请注意restarting, removing, dead不受支持,将被忽略。指定此条件时,它会过滤所有容器。
    • 🐳 --filter before/since=<ID/name>:过滤在给定 ID 或名称之前或之后创建的容器
    • 🐳 --filter volume=<value>:按给定的挂载卷或绑定挂载进行过滤
    • 🐳 --filter network=<value>:按给定网络进行过滤

下列参数--filter尚不受支持:

  1. --filter ancestor=<value>
  2. --filter publish/expose=<port/startport-endport>[/<proto>]
  3. --filter health=<value>
  4. --filter isolation=<value>
  5. --filter is-task=<value>

🐳 🟦 nerdctl 检查

显示一个或多个容器的详细信息。

用法:nerdctl inspect [OPTIONS] NAME|ID [NAME|ID...]

标志:

  • 🤓 --mode=(dockercompat|native):检查模式。“本机”产生更多信息。
  • 🐳 --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🐳 --type:返回指定类型的 JSON
  • 🐳 --size:如果类型为容器,则显示文件总大小

未实现的docker inspect标志: --size

🐳 nerdctl 日志

获取容器的日志。

⚠️目前,仅nerdctl run -d支持使用 创建的容器。

用法:nerdctl logs [OPTIONS] CONTAINER

标志:

  • 🐳 -f, --follow:跟踪日志输出
  • 🐳 --since:显示自时间戳记以来的日志(例如 2013-01-02T13:23:37Z)或相对日志(例如 42m 代表 42 分钟)
  • 🐳 --until:显示时间戳之前的日志(例如 2013-01-02T13:23:37Z)或相对时间戳(例如 42m 表示 42 分钟)
  • 🐳 -t, --timestamps:显示时间戳
  • 🐳 -n, --tail:从日志末尾显示的行数(默认“全部”)

未实现的docker logs标志:--details

🐳 nerdctl 端口

列出容器的端口映射或特定映射。

用法:nerdctl port CONTAINER [PRIVATE_PORT[/PROTO]]

🐳 nerdctl rm

移除一个或多个容器。

用法:nerdctl rm [OPTIONS] CONTAINER [CONTAINER...]

标志:

  • 🐳 -f, --force:强制删除正在运行|暂停|未知的容器(使用 SIGKILL)
  • 🐳 -v, --volumes:删除与容器关联的匿名卷

未实现的docker rm标志:--link

🐳 nerdctl stop

停止一个或多个正在运行的容器。

用法:nerdctl stop [OPTIONS] CONTAINER [CONTAINER...]

标志:

  • 🐳 -t, --time=SECONDS:终止前等待停止的秒数(默认“10”)
    • 提示:如果容器中的 init 进程在收到 SIGTERM 后退出,或者在指定的时间之前退出,容器将立即退出

🐳 nerdctl 启动

启动一个或多个正在运行的容器。

用法:nerdctl start [OPTIONS] CONTAINER [CONTAINER...]

标志:

  • 🐳 -a, --attach:附加 STDOUT/STDERR 并转发信号
  • 🐳 --detach-keys:覆盖默认分离键

未实现的标志docker start--checkpoint,,--checkpoint-dir--interactive

🐳 nerdctl 重启

重新启动一个或多个正在运行的容器。

用法:nerdctl restart [OPTIONS] CONTAINER [CONTAINER...]

标志:

  • 🐳 -t, --time=SECONDS:终止前等待停止的秒数(默认“10”)
    • 提示:如果容器中的 init 进程在收到 SIGTERM 后退出,或者在指定的时间之前退出,容器将立即退出

🐳 nerdctl 更新

更新一个或多个容器的配置。

用法:nerdctl update [OPTIONS] CONTAINER [CONTAINER...]

  • 🐳 --cpus:CPU 数量
  • 🐳 --cpu-quota:限制 CPU CFS(完全公平调度程序)配额
  • 🐳 --cpu-period:限制 CPU CFS(完全公平调度程序)周期
  • 🐳 --cpu-shares:CPU 份额(相对权重)
  • 🐳 --cpuset-cpus:允许执行的 CPU (0-3, 0,1)
  • 🐳 --cpuset-mems:允许执行的内存节点(MEM)(0-3、0、1)。仅在 NUMA 系统上有效
  • 🐳 --memory:内存限制
  • 🐳 --memory-reservation:内存软限制
  • 🐳 --memory-swap:交换限制等于内存加上交换:“-1”以启用无限交换
  • 🐳 --kernel-memory:内核内存限制(已弃用)
  • 🐳 --pids-limit:调整容器 pid 限制
  • 🐳 --blkio-weight:阻止 IO(相对权重),介于 10 到 1000 之间,或 0 表示禁用(默认为 0)
  • 🐳 --restart=(no|always|on-failure|unless-stopped):容器退出时应用重新启动策略

🐳 nerdctl 等待

阻塞直到一个或多个容器停止,然后打印它们的退出代码。

用法:nerdctl wait CONTAINER [CONTAINER...]

🐳 nerdctl kill

终止一个或多个正在运行的容器。

用法:nerdctl kill [OPTIONS] CONTAINER [CONTAINER...]

标志:

  • 🐳 -s, --signal:发送给容器的信号(默认:“KILL”)

🐳 nerdctl 暂停

暂停一个或多个容器内的所有进程。

用法:nerdctl pause CONTAINER [CONTAINER...]

🐳 nerdctl 取消暂停

取消暂停一个或多个容器内的所有进程。

用法:nerdctl unpause CONTAINER [CONTAINER...]

🐳 nerdctl 重命名

重命名容器。

用法:nerdctl rename CONTAINER NEW_NAME

🐳 nerdctl 附加

将 stdin、stdout 和 stderr 附加到正在运行的容器。例如:

  1. nerdctl run -it --name test busybox使用 pty 启动容器
  2. ctrl-p ctrl-q从容器中分离
  3. nerdctl attach test附着在容器上

注意事项:

  • 目前只允许一个附加会话。当第二个会话尝试附加时,目前 nerdctl 不会返回任何错误。但是,由于在后台,stdin、stdout 和 stderr 分别只有一个 FIFO,如果有多个会话,所有会话都将从相同的 3 个 FIFO 读取和写入,这将导致混合输入和部分输出。
  • 在实现双重日志记录(问题#1946)之前,无法附加由nerdctl run -dnerdctl start(没有)启动的容器。--attach

用法:nerdctl attach CONTAINER

标志:

  • 🐳 --detach-keys:覆盖默认分离键

未实现的docker attach标志:--no-stdin--sig-proxy

🐳 nerdctl 容器修剪

删除所有停止的容器。

用法:nerdctl container prune [OPTIONS]

标志:

  • 🐳 -f, --force:不提示确认。

未实现的docker container prune标志:--filter

🐳 nerdctl diff

检查容器文件系统上文件或目录的更改

用法:nerdctl diff CONTAINER

建造

🐳 nerdctl 构建

从 Dockerfile 构建映像。

ℹ️ 需要 buildkitd 运行。另请参阅有关使用 BuildKit进行设置的文档nerdctl build

用法:nerdctl build [OPTIONS] PATH

标志:

  • 🤓 --buildkit-host=<BUILDKIT_HOST>:BuildKit 地址
  • 🐳 -t, --tag:名称和可选的标签,格式为“name:tag”
  • 🐳 -f, --file:Dockerfile 的名称
  • 🐳 --target:设置要构建的目标构建阶段
  • 🐳 --build-arg:设置构建时变量
  • 🐳 --no-cache:构建镜像时不要使用缓存
  • 🐳 --output=OUTPUT:输出目的地(格式:type=local,dest=path)
    • 🐳 type=local,dest=path/to/output-dir:本地目录
    • 🐳 type=oci[,dest=path/to/output.tar]:Docker/OCI 双格式 tar 包(兼容docker buildx build
    • 🐳 type=docker[,dest=path/to/output.tar]:Docker 格式 tar ball(兼容docker buildx build
    • 🐳 type=tar[,dest=path/to/output.tar]:生焦油球
    • 🐳 type=image,name=example.com/image,push=true:推送到注册表(参见buildctl build文档)
  • 🐳 --progress=(auto|plain|tty):设置进度输出类型(auto、plain、tty)。使用 plain 显示容器输出
  • 🐳 --provenance:“--attest=type=provenance” 的简写,请参阅buildx_build.md文档
  • 🐳 --pull=(true|false):设置为 true 时,始终尝试从远程拉取最新的镜像版本。默认使用 buildkit 的默认值。
  • 🐳 --secret:向构建公开的秘密文件:id=mysecret,src=/local/secret
  • 🐳 --allow:允许额外的特权,例如 network.host、security.insecure(需要配置 buildkitd 才能启用该功能,请参阅buildkitd.toml文档)
  • 🐳 --attest:证明参数(格式:“type=sbom,generator=image”),参见buildx_build.md文档
  • 🐳 --ssh:向构建公开的 SSH 代理套接字或密钥(格式default|<id>[=<socket>|<key>[,<key>]]:)
  • 🐳 -q, --quiet:抑制构建输出并在成功时打印图像 ID
  • 🐳 --sbom:“--attest=type=sbom”的简写,请参阅buildx_build.md文档
  • 🐳 --cache-from=CACHE:外部缓存源(例如 user/app:cache、type=local、src=path/to/dir)(兼容docker buildx build
  • 🐳 --cache-to=CACHE:缓存导出目的地(例如 user/app:cache、type=local、dest=path/to/dir)(兼容docker buildx build
  • 🐳 --platform=(amd64|arm64|...):设置构建的目标平台(兼容docker buildx build
  • 🐳 --iidfile=FILE:将图像 ID 写入文件
  • 🤓 --ipfs:从 IPFS 中提取基础镜像来构建镜像。ipfs.md详情请参阅。
  • 🐳 --label:设置图像的元数据
  • 🐳 --network=(default|host|none):设置构建过程中 RUN 指令的网络模式。(兼容buildctl build
  • 🐳 --build-context:设置构建的附加上下文(例如 dir2=/path/to/dir2、myorg/myapp=docker-image://path/to/myorg/myapp)

未实现的docker build标志:--add-host--squash

🐳 nerdctl 提交

根据容器的更改创建新镜像

用法:nerdctl commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

标志:

  • 🐳 -a, --author:作者(例如,“nerdctl 贡献者nerdctl-dev@example.com ”)
  • 🐳 -m, --message:提交消息
  • 🐳 -c, --change:将 Dockerfile 指令应用于创建的图像(支持的指令:[CMD,ENTRYPOINT])
  • 🐳 -p, --pause:提交期间暂停容器(默认值:true)

图像管理

🐳 🟦 nerdctl 图片

列出图像

⚠️该镜像ID通常与Docker镜像ID不同。

用法:nerdctl images [OPTIONS] [REPOSITORY[:TAG]]

标志:

  • 🐳 -a, --all:显示所有图片(未实现)
  • 🐳 -q, --quiet:仅显示数字 ID
  • 🐳 --no-trunc:不要截断输出
  • 🐳 --format:使用给定的 Go 模板格式化输出
    • 🐳 --format=table(默认):表格
    • 🐳 --format='{{json .}}':JSON
    • 🤓 --format=wide:宽桌
    • 🤓 --format=json:别名--format='{{json .}}'
  • 🐳 --digests:显示摘要(与 Docker 兼容,与 ID 不同)
  • 🐳 -f, --filter:过滤图像。
    • 🐳 --filter=before=<image:tag>:在给定图像之前创建的图像(独家)
    • 🐳 --filter=since=<image:tag>:根据给定图像创建的图像(独家)
    • 🐳 --filter=label<key>=<value>:根据标签的存在或标签和值来匹配图像
    • 🐳 --filter=dangling=true:通过悬垂方式过滤图像
    • 🤓 --filter=reference=<image:tag>:通过引用过滤图像(匹配docker兼容通配符模式和正则表达式匹配)
  • 🤓 --names:显示图片名称

🐳 🟦 nerdctl pull

从注册表中提取图像。

用法:nerdctl pull [OPTIONS] NAME[:TAG|@DIGEST]

🤓ipfs://前缀可用于NAME从 IPFS 中提取。ipfs.md详情请参阅。

标志:

  • 🐳 --platform=(amd64|arm64|...):针对特定平台提取内容
    • 🤓 与 Docker 不同,此标志可以多次指定(--platform=amd64 --platform=arm64
  • 🤓 --all-platforms:为所有平台提取内容
  • 🤓 --unpack:解压当前单一平台的图像(自动/真/假)
  • 🐳 -q, --quiet:抑制详细输出
  • 🤓 --verify:验证图像(无|共同签名|符号)。详情请参阅./cosign.md和。./notation.md
  • 🤓 --cosign-key:公钥文件、KMS、URI 或 Kubernetes Secret 的路径--verify=cosign
  • 🤓 --cosign-certificate-identity:--verify=cosign 的有效 Fulcio 证书中预期的身份。有效值包括电子邮件地址、DNS 名称、IP 地址和 URI。必须为无密钥流设置 --cosign-certificate-identity 或 --cosign-certificate-identity-regexp
  • 🤓 : --verify=cosign 的 --cosign-certificate-identity 的正则表达式替代方案。接受https://golang.org/s/re2syntax--cosign-certificate-identity-regexp中描述的 Go 正则表达式语法。必须为无密钥流设置 --cosign-certificate-identity 或 --cosign-certificate-identity-regexp
  • 🤓 --cosign-certificate-oidc-issuer: --verify=cosign 的有效 Fulcio 证书中预期的 OIDC 发行者,例如https://token.actions.githubusercontent.comhttps://oauth2.sigstore.dev/auth。必须为无密钥流设置 --cosign-certificate-oidc-issuer 或 --cosign-certificate-oidc-issuer-regexp
  • 🤓 --cosign-certificate-oidc-issuer-regexp: --verify=cosign, 的 --certificate-oidc-issuer 的正则表达式替代方案。接受https://golang.org/s/re2syntax中描述的 Go 正则表达式语法。必须为无密钥流设置 --cosign-certificate-oidc-issuer 或 --cosign-certificate-oidc-issuer-regexp
  • 🤓 --ipfs-address:IPFS API 的多地址($IPFS_PATH如果定义则默认使用环境变量或本地目录~/.ipfs
  • 🤓 --soci-index-digest:为 SOCI 指定特定的索引摘要。如果留空,SOCI 将自动使用选择策略确定的索引。

未实现的docker pull标志:--all-tags--disable-content-trust(默认为 true)

🐳 nerdctl push

将图像推送到注册表。

用法:nerdctl push [OPTIONS] NAME[:TAG]

🤓ipfs://前缀可用于NAME将其推送到 IPFS。ipfs.md详情请参阅。

标志:

  • 🤓 --platform=(amd64|arm64|...):针对特定平台推送内容
  • 🤓 --all-platforms:向所有平台推送内容
  • 🤓 --sign:对图像进行签名(无|共同签名|符号)。详情请参阅./cosign.md和。./notation.md
  • 🤓 --cosign-key:私钥文件、KMS、URI 或 Kubernetes Secret 的路径--sign=cosign
  • 🤓 --notation-key-name:为先前添加到符号密钥列表中的密钥签名密钥名称--sign=notation
  • 🤓 --allow-nondistributable-artifacts:允许推送带有不可分发 blob 的图像
  • 🤓 --ipfs-address:IPFS API 的多地址($IPFS_PATH如果定义则默认使用环境变量或本地目录~/.ipfs
  • 🐳 -q, --quiet:抑制详细输出
  • 🤓 --soci-span-size:soci 索引用于分段层数据的跨度大小(以字节为单位)。默认值为 4 MiB。
  • 🤓 --soci-min-layer-size:构建 zTOC 的最小层大小(以字节为单位)。较小的层不会有 zTOC,也不会延迟拉取。默认值为 10 MiB。

未实现的docker push标志:--all-tags--disable-content-trust(默认为 true)

🐳 nerdctl 加载

从 tar 存档或 STDIN 加载图像。

🤓 支持 Docker Image Spec v1.2 和 OCI Image Spec v1.0。

用法:nerdctl load [OPTIONS]

标志:

  • 🐳 -i, --input:从 tar 存档文件读取,而不是从 STDIN 读取
  • 🐳 -q, --quiet:抑制负载输出
  • 🤓 --platform=(amd64|arm64|...):导入特定平台的内容
  • 🤓 --all-platforms:导入所有平台的内容

🐳 nerdctl 保存

将一个或多个图像保存到 tar 存档(默认流式传输到 STDOUT)

🤓 该档案实现了 Docker Image Spec v1.2 和 OCI Image Spec v1.0。

用法:nerdctl save [OPTIONS] IMAGE [IMAGE...]

标志:

  • 🐳 -o, --output:写入文件,而不是 STDOUT
  • 🤓 --platform=(amd64|arm64|...):导出特定平台的内容
  • 🤓 --all-platforms:导出适用于所有平台的内容

🐳 nerdctl 标签

创建一个引用 SOURCE_IMAGE 的标签 TARGET_IMAGE。

用法:nerdctl tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

🐳 nerdctl rmi

移除一个或多个图像

用法:nerdctl rmi [OPTIONS] IMAGE [IMAGE...]

标志:

  • 🤓 --async:异步模式
  • 🐳 -f, --force:强制删除图像

未实现的docker rmi标志:--no-prune

🐳 nerdctl 图像检查

显示一个或多个图像的详细信息。

用法:nerdctl image inspect [OPTIONS] NAME|ID [NAME|ID...]

标志:

  • 🤓 --mode=(dockercompat|native):检查模式。“本机”产生更多信息。
  • 🐳 --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🤓 --platform=(amd64|arm64|...):检查特定平台

🐳 nerdctl 图片历史

显示图像的历史记录。

用法:nerdctl history [OPTIONS] IMAGE

标志:

  • 🐳 --no-trunc:不要截断输出
  • 🐳 -q, --quiet:仅显示快照 ID
  • 🐳 --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🐳 -H, --human:以人类可读的格式打印大小和日期(默认为 true)

🐳 nerdctl 图像修剪

删除未使用的图像。

用法:nerdctl image prune [OPTIONS]

标志:

  • 🐳 -a, --all:删除所有未使用的图像,而不仅仅是悬空的图像
  • 🐳 -f, --filter:过滤图像。
    • 🐳 --filter=until=<timestamp>:在给定日期格式的时间戳或 Go 持续时间字符串之前创建的图像。目前不支持 Unix 时间戳。
    • 🐳 --filter=label<key>=<value>:根据标签的存在或标签和值来匹配图像
  • 🐳 -f, --force:不提示确认

🤓 nerdctl 图像转换

转换图像格式。

例如,nerdctl image convert --estargz --oci example.com/foo:orig example.com/foo:esgz

用法:nerdctl image convert [OPTIONS] SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

标志:

  • --estargz :将旧版 tar(.gz) 层转换为 eStargz,以进行延迟拉取。应与“--oci”结合使用
  • --estargz-record-in=<FILE> :读取ctr-remote optimize --record-out=<FILE>记录文件。⚠️此标志尚在实验之中,可能会发生变化。
  • --estargz-compression-level=<LEVEL>:eStargz 压缩级别(默认值:9)
  • --estargz-chunk-size=<SIZE> :eStargz 块大小
  • --estargz-min-chunk-size=<SIZE>:必须在一个 gzip 流中写入最少数量的数据字节(需要 stargz-snapshotter >= v0.13.0)。这对于创建较小的 eStargz 图像很有用(有关./stargz.md详细信息,请参阅)。
  • --estargz-external-toc:将 TOC JSON 分离成另一个图像(称为“TOC 图像”)。TOC 图像的名称是原始名称 +“-esgztoc”后缀。eStargz 和 TOC 图像都应推送到同一个注册表。(需要 stargz-snapshotter >= v0.13.0)用于创建较小的 eStargz 图像(有关./stargz.md详细信息,请参阅)。⚠️此标志尚在实验之中,可能会发生变化。
  • --estargz-keep-diff-id:转换为 esgz 而不改变 diffID(不能与‘--estargz-record-in’一起使用。必须与‘--estargz-external-toc’一起指定)
  • --zstd :使用 zstd 压缩代替 gzip。应与 '--oci' 结合使用
  • --zstd-compression-level=<LEVEL> :zstd 压缩级别(默认值:3)
  • --zstdchunked :使用 zstd 压缩代替 gzip(又名 zstd:chunked)。应与“--oci”结合使用
  • --zstdchunked-record-in=<FILE>:读取ctr-remote optimize --record-out=<FILE>记录文件。⚠️此标志尚在实验之中,可能会发生变化。
  • --zstdchunked-compression-level=<LEVEL>:zstd:chunked 压缩级别(默认值:3)
  • --zstdchunked-chunk-size=<SIZE>:zstd:分块大小
  • --uncompress :将 tar.gz 层转换为未压缩的 tar 层
  • --oci :将 Docker 媒体类型转换为 OCI 媒体类型
  • --platform=<PLATFORM> :为特定平台转换内容
  • --all-platforms :转换所有平台的内容(默认值:false)

🤓 nerdctl 图像加密

加密图像层。请参阅./ocicrypt.md

用法:nerdctl image encrypt [OPTIONS] SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

例子:

openssl genrsa -out mykey.pem
openssl rsa -in mykey.pem -pubout -out mypubkey.pem
nerdctl image encrypt --recipient=jwe:mypubkey.pem --platform=linux/amd64,linux/arm64 foo example.com/foo:encrypted
nerdctl push example.com/foo:encrypted

⚠️注意:此命令仅加密镜像层,不会加密容器配置(如Env和 )Cmd。要查看非加密信息,请运行nerdctl image inspect --mode=native --platform=PLATFORM example.com/foo:encrypted

标志:

  • --recipient=<RECIPIENT> :图像的接收者是可以解密的人(例如jwe:mypubkey.pem
  • --dec-recipient=<RECIPIENT> :图像的接收者;仅用于 PKCS7,并且必须是 x509 证书
  • --key=<KEY>[:<PWDDESC>] :密钥的文件名和可选密码,以冒号分隔,PWDDESC=|pass:|fd=|filename
  • --gpg-homedir=<DIR> :要使用的 GPG 主目录;默认情况下,gpg 使用 ~/.gnupg
  • --gpg-version=<VERSION> :GPG 版本(“v1”或“v2”),默认会做出有根据的猜测
  • --platform=<PLATFORM> :为特定平台转换内容
  • --all-platforms :转换所有平台的内容(默认值:false)

🤓 nerdctl 图像解密

解密图像层。请参阅./ocicrypt.md

用法:nerdctl image decrypt [OPTIONS] SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

例子:

nerdctl pull --unpack=false example.com/foo:encrypted
nerdctl image decrypt --key=mykey.pem example.com/foo:encrypted foo:decrypted

标志:

  • --dec-recipient=<RECIPIENT> :图像的接收者;仅用于 PKCS7,并且必须是 x509 证书
  • --key=<KEY>[:<PWDDESC>] :密钥的文件名和可选密码,以冒号分隔,PWDDESC=|pass:|fd=|filename
  • --gpg-homedir=<DIR> :要使用的 GPG 主目录;默认情况下,gpg 使用 ~/.gnupg
  • --gpg-version=<VERSION> :GPG 版本(“v1”或“v2”),默认会做出有根据的猜测
  • --platform=<PLATFORM> :为特定平台转换内容
  • --all-platforms :转换所有平台的内容(默认值:false)

註冊

🐳 nerdctl 登录

登录到容器注册表。

用法:nerdctl login [OPTIONS] [SERVER]

标志:

  • 🐳 -u, --username:用户名
  • 🐳 -p, --password:密码
  • 🐳 --password-stdin:从标准输入中获取密码

🐳 nerdctl 注销

从容器注册表注销

用法:nerdctl logout [SERVER]

网管

🐳 nerdctl 网络创建

创建网络

ℹ️ 为了隔离 CNI 桥,需要安装 CNI 插件 v1.1.0 或更高版本。

用法:nerdctl network create [OPTIONS] NETWORK

标志:

  • 🐳 -d, --driver=(bridge|nat|macvlan|ipvlan):管理网络的驱动程序
    • 🐳 --driver=bridge:unix 的默认驱动程序
    • 🐳 --driver=macvlan:适用于 unix 的 Macvlan 网络驱动程序
    • 🐳 --driver=ipvlan:适用于 unix 的 IPvlan 网络驱动程序
    • 🐳🟦 --driver=nat:Windows 的默认驱动程序
  • 🐳 -o, --opt:设置驱动程序特定选项
    • 🐳 --opt=com.docker.network.driver.mtu=<MTU>:设置容器网络 MTU
    • 🤓 --opt=mtu=<MTU>:别名--opt=com.docker.network.driver.mtu=<MTU>
    • 🐳 --opt=macvlan_mode=(bridge)>:设置 macvlan 网络模式(默认:bridge)
    • 🐳 --opt=ipvlan_mode=(l2|l3):设置 IPvlan 网络模式(默认:l2)
    • 🤓 --opt=mode=(bridge|l2|l3)--opt=macvlan_mode=(bridge)和的别名--opt=ipvlan_mode=(l2|l3)
    • 🐳 --opt=parent=<INTERFACE>:在主机上设置有效的父接口
  • 🐳 --ipam-driver=(default|host-local|dhcp):IP 地址管理驱动程序
    • 🐳🟦 --ipam-driver=default:默认 IPAM 驱动程序
    • 🤓 --ipam-driver=host-local:适用于 unix 的主机本地 IPAM 驱动程序
    • 🤓 --ipam-driver=dhcp:适用于 unix 的 DHCP IPAM 驱动程序,需要 root
  • 🐳 --ipam-opt:设置 IPAM 驱动程序特定选项
  • 🐳 --subnet:CIDR 格式的子网,代表网络段,例如“10.5.0.0/16”
  • 🐳 --gateway:主子网的网关
  • 🐳 --ip-range:从子范围分配容器 IP
  • 🐳 --label:在网络上设置元数据
  • 🐳 --ipv6:启用 IPv6。应与有效子网一起使用。

未实现的标志docker network create--attachable,,,,,,,--aux-address​​--config-from--config-only--ingress--internal--scope

🐳 nerdctl network ls

列出网络

用法:nerdctl network ls [OPTIONS]

标志:

  • 🐳 -q, --quiet:仅显示网络 ID
  • 🐳 --format:使用给定的 Go 模板格式化输出
    • 🐳 --format=table(默认):表格
    • 🐳 --format='{{json .}}':JSON
    • 🤓 --format=wide:别名--format=table
    • 🤓 --format=json:别名--format='{{json .}}'

未实现的docker network ls标志:--no-trunc

🐳 nerdctl 网络检查

显示一个或多个网络的详细信息

用法:nerdctl network inspect [OPTIONS] NETWORK [NETWORK...]

标志:

  • 🐳 --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🤓 --mode=(dockercompat|native):检查模式。“本机”产生更多信息。

未实现的docker network inspect标志:--verbose

🐳 nerdctl 网络 rm

根据名称或标识符删除一个或多个网络

:warning 如果有容器连接到网络,则网络删除将会失败。

用法:nerdctl network rm NETWORK [NETWORK...]

🐳 nerdctl 网络修剪

删除所有未使用的网络

用法:nerdctl network prune [OPTIONS]

标志:

  • 🐳 -f, --force:不提示确认

未实现的docker network prune标志:--filter

卷管理

🐳 nerdctl 卷创建

创建卷

用法:nerdctl volume create [OPTIONS] [VOLUME]

标志:

  • 🐳 --label:设置卷的元数据

未实现的docker volume create标志:--driver--opt

🐳 nerdctl volume ls

列出卷

用法:nerdctl volume ls [OPTIONS]

标志:

  • 🐳 -q, --quiet:仅显示卷名称
  • 🐳 --format:使用给定的 Go 模板格式化输出
    • 🐳 --format=table(默认):表格
    • 🐳 --format='{{json .}}':JSON
    • 🤓 --format=wide:别名--format=table
    • 🤓 --format=json:别名--format='{{json .}}'
  • 🤓 --size:显示卷的磁盘使用情况。
  • 🐳 -f, --filter:根据给定的条件过滤卷。
    • 🐳 --filter label=<key>=<value>:按 key和上的标签匹配卷value。如果value留空,则匹配所有带有的卷,key 无论其值如何
    • 🐳 --filter name=<value>:匹配名称包含value字符串的所有卷
    • 🤓 --filter "size=<value>":匹配所有大小符合的卷valuesize操作数可以是>=, <=, >, <, =value必须是整数。应使用引号,否则某些 shell 可能会将操作数视为重定向

下列参数--filter尚不受支持:

  1. --filter=dangling=true:通过悬垂来过滤卷
  2. --filter=driver=local:按驱动程序过滤卷

🐳 nerdctl 音量检查

显示一个或多个卷的详细信息

用法:nerdctl volume inspect [OPTIONS] VOLUME [VOLUME...]

标志:

  • 🐳 --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🤓 --size:显示卷的磁盘使用情况

🐳 nerdctl 音量 rm

删除一个或多个卷

用法:nerdctl volume rm [OPTIONS] VOLUME [VOLUME...]

  • 🐳 -f, --force:强制删除一个或多个卷

🐳 nerdctl 卷修剪

删除所有未使用的本地卷

用法:nerdctl volume prune [OPTIONS]

标志:

  • 🐳 -f, --force:不提示确认

未实现的docker volume prune标志:--filter

命名空间管理

🤓 🟦 nerdctl 命名空间创建

创建一个新的命名空间。

用法:nerdctl namespace create NAMESPACE 标志:

  • --label:设置命名空间的标签

🤓 🟦 nerdctl 命名空间检查

检查命名空间。

用法:nerdctl namespace inspect NAMESPACE

🤓 🟦 nerdctl namespace ls

列出容器命名空间,例如“default”、“moby”或“k8s.io”。

用法:nerdctl namespace ls [OPTIONS]

标志:

  • -q, --quiet:仅显示命名空间名称

🤓 🟦 nerdctl 命名空间删除

删除一个或多个命名空间。

用法:nerdctl namespace remove [OPTIONS] NAMESPACE [NAMESPACE...]

标志:

  • -c, --cgroup:删除命名空间的 cgroup

🤓 🟦 nerdctl 命名空间更新

更新命名空间的标签。

用法:nerdctl namespace update NAMESPACE

标志:

  • --label:设置命名空间的标签

AppArmor 配置文件管理

🤓 nerdctl apparmor 检查

显示默认的 AppArmor 配置文件“nerdctl-default”。此命令无法显示其他配置文件。

用法:nerdctl apparmor inspect

🤓 nerdctl apparmor 加载

加载默认的 AppArmor 配置文件“nerdctl-default”。需要 root 权限。

用法:nerdctl apparmor load

🤓 nerdctl apparmor ls

列出已加载的 AppArmor 配置文件

用法:nerdctl apparmor ls [OPTIONS]

标志:

  • -q, --quiet:仅显示卷名
  • --format:使用给定的 Go 模板格式化输出,例如,{{json .}}

🤓 nerdctl apparmor 卸载

卸载 AppArmor 配置文件。目标配置文件名称默认为“nerdctl-default”。需要 root 权限。

用法:nerdctl apparmor unload [PROFILE]

建造者管理

🐳 nerdctl builder prune

清理 BuildKit 构建缓存。

⚠️输出格式与 Docker 不兼容。

用法:nerdctl builder prune

标志:

  • 🤓 --buildkit-host=<BUILDKIT_HOST>:BuildKit 地址
  • 🐳 --all:删除所有未使用的构建缓存,而不仅仅是悬空的缓存
  • 🐳 --force:不提示确认

未实现的docker builder prune标志:--filter--keep-storage

🤓 nerdctl builder 调试

使用buildg交互式调试 Dockerfile 。./builder-debug.md详情请参阅。这是一个实验性功能。

⚠️此命令目前不使用主机的buildkitd守护程序,而是使用 buildg 提供的修补版本 BuildKit。这个问题应该会在将来得到修复。

用法:nerdctl builder debug PATH

标志:

  • 🤓 -f--file:Dockerfile 的名称
  • 🤓 --image:用于调试阶段的图像
  • 🤓 --target:设置要构建的目标构建阶段
  • 🤓 --build-arg:设置构建时变量

系统

🐳 nerdctl 事件

从服务器获取实时事件。

⚠️输出格式与 Docker 不兼容。

用法:nerdctl events [OPTIONS]

标志:

  • 🐳 --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🐳 -f, --filter:根据给定条件过滤容器
    • 🐳 --filter event=<value>:活动状态。“开始”是唯一支持的状态。

未实现的docker events标志:--since--until

🐳 nerdctl 信息

显示系统范围的信息

用法:nerdctl info [OPTIONS]

标志:

  • 🐳 -f, --format:使用给定的 Go 模板格式化输出,例如,{{json .}}
  • 🤓 --mode=(dockercompat|native):信息模式。“本机”产生更多信息。

🐳 nerdctl 版本

显示 nerdctl 版本信息

用法:nerdctl version [OPTIONS]

标志:

  • 🐳 -f, --format:使用给定的 Go 模板格式化输出,例如,{{json .}}

🐳 nerdctl 系统修剪

删除未使用的数据

用法:nerdctl system prune [OPTIONS]

标志:

  • 🐳 -a, --all:删除所有未使用的图像,而不仅仅是悬空的图像
  • 🐳 -f, --force:不提示确认
  • 🐳 --volumes:修剪卷

未实现的docker system prune标志:--filter

统计资料

🐳 nerdctl 统计数据

显示容器资源使用情况统计的实时流。

用法:nerdctl stats [OPTIONS]

标志:

  • 🐳 -a, --all:显示所有容器(默认显示正在运行)
  • 🐳 --format=FORMAT:使用 Go 模板漂亮地打印图像,例如,{{json .}}
  • 🐳 --no-stream:禁用流统计并仅提取第一个结果
  • 🐳 --no-trunc:不要截断输出

🐳 nerdctl 顶部

显示容器的正在运行的进程。

用法:nerdctl top CONTAINER [ps OPTIONS]

Shell 补全

🤓 nerdctl 完成 bash

为 bash 生成自动完成脚本。

用法:将以下行添加到~/.bash_profile

source <(nerdctl completion bash)

或者nerdctl completion bash > /etc/bash_completion.d/nerdctl以 root 身份运行。

🤓 nerdctl 补全 zsh

为 zsh 生成自动完成脚本。

用法:参见nerdctl completion zsh --help

🤓 nerdctl 补全鱼

生成 fish的自动完成脚本。

用法:参见nerdctl completion fish --help

🤓 nerdctl 补全 powershell

为 powershell 生成自动完成脚本。

用法:参见nerdctl completion powershell --help

撰写

🐳 nerdctl 撰写

撰写

用法:nerdctl compose [OPTIONS] [COMMAND]

标志:

  • 🐳 -f, --file:指定备用撰写文件
  • 🐳 -p, --project-name:指定备用项目名称
  • 🤓 --ipfs-address:IPFS API 的多地址($IPFS_PATH如果定义则默认使用环境变量或本地目录~/.ipfs
  • 🐳 `--profile:指定要启用的配置文件

🐳 nerdctl 撰写

创建并启动容器

用法:nerdctl compose up [OPTIONS] [SERVICE...]

标志:

  • 🐳 --abort-on-container-exit:如果任何容器停止,则停止所有容器。与 不兼容-d
  • 🐳 -d, --detach:分离模式:在后台运行容器。与 不兼容--abort-on-container-exit
  • 🐳 --no-build:不要构建图像,即使它缺失。
  • 🐳 --no-color:产生单色输出
  • 🐳 --no-log-prefix:不要在日志中打印前缀
  • 🐳 --build:在启动容器之前构建图像。
  • 🤓 --ipfs:从 IPFS 中提取基础镜像来构建镜像。ipfs.md详情请参阅。
  • 🐳 --quiet-pull:拉取但不打印进度信息
  • 🐳 --scale:将 SERVICE 扩展为 NUM 个实例。scale如果存在,则覆盖 Compose 文件中的设置。
  • 🐳 --remove-orphans:删除 Compose 文件中未定义的服务的容器

未实现docker-compose up(V1 ) 标志:--no-deps,,,,,,,,,,,​​​--force-recreate--always-recreate-deps--no-recreate--no-start--abort-on-container-exit--attach-dependencies--timeout--renew-anon-volumes--exit-code-from

未实现docker compose up(V2)标志:--environment

🐳 nerdctl 撰写日志

创建并启动容器

用法:nerdctl compose logs [OPTIONS] [SERVICE...]

标志:

  • 🐳 --no-color:产生单色输出
  • 🐳 --no-log-prefix:不要在日志中打印前缀
  • 🐳 --timestamps:显示时间戳
  • 🐳 --tail:从日志末尾显示的行数

未实现docker compose logs(V2)标志: --since--until

🐳 nerdctl compose build

建立或重建服务。

用法:nerdctl compose build [OPTIONS] [SERVICE...]

标志:

  • 🐳 --build-arg:设置服务的构建时变量
  • 🐳 --no-cache:构建镜像时不要使用缓存
  • 🐳 --progress:设置进度输出类型(auto、plain、tty)。使用 plain 显示容器输出
  • 🤓 --ipfs:从 IPFS 中提取基础镜像来构建镜像。ipfs.md详情请参阅。

未实现(docker-compose buildV1 )标志:--compress,,,,,,,--force-rm--memory--no-rm--parallel--pull--quiet

🐳 nerdctl compose 创建

为一个或多个服务创建容器。

用法:nerdctl compose create [OPTIONS] [SERVICE...]

标志:

  • 🐳 --build:在启动容器之前构建镜像
  • 🐳 --force-recreate:即使配置和镜像没有改变,也要重新创建容器
  • 🐳 --no-build:不要构建镜像,即使它缺失,与--build
  • 🐳 --no-recreate:如果容器存在,则不要重新创建,否则会与--force-recreate
  • 🐳 --pull:运行前拉取图像。(支持always|missing|never)(默认“missing”)

🐳 nerdctl compose exec

在服务正在运行的容器上执行命令。

用法:nerdctl compose exec [OPTIONS] SERVICE COMMAND [ARGS...]

标志:

  • 🐳 -d, --detach:分离模式:在后台运行命令
  • 🐳 -e, --env:设置环境变量
  • 🐳 --index:如果服务有多个实例,则设置容器的索引。(默认为 1)
  • 🐳 -i, --interactive:即使未连接也保持 STDIN 开放(默认为 true)
  • 🐳 --privileged:授予命令扩展权限
  • 🐳 -t, --tty:分配一个伪 TTY
  • 🐳 -T, --no-TTY:禁用伪 TTY 分配。默认情况下,nerdctl compose exec 会分配一个 TTY。
  • 🐳 -u, --user:用户名或 UID(格式<name|uid>[:<group|gid>]:)
  • 🐳 -w, --workdir:容器内的工作目录

🐳 nerdctl compose down

删除容器和相关资源

用法:nerdctl compose down [OPTIONS]

标志:

  • 🐳 -v, --volumes:删除 Compose 文件的卷部分中声明的命名卷以及附加到容器的匿名卷
  • 🐳 --remove-orphans:删除 Compose 文件中未定义的服务容器。

未实现docker-compose down(V1)标志:--rmi--timeout

🐳 nerdctl 组合图片

列出服务中创建的容器所使用的镜像

用法:nerdctl compose images [OPTIONS] [SERVICE...]

标志:

  • 🐳 -q, --quiet:仅显示数字图像 ID

🐳 nerdctl compose start

启动现有的服务容器

用法:nerdctl compose start [SERVICE...]

🐳 nerdctl compose stop

停止服务中的容器但不移除它们。

用法:nerdctl compose stop [OPTIONS] [SERVICE...]

标志:

  • 🐳 -t, --timeout:终止前等待停止的秒数(默认 10)

🐳 nerdctl 撰写端口

打印服务容器端口绑定的公共端口

用法:nerdctl compose port [OPTIONS] SERVICE PRIVATE_PORT

标志:

  • 🐳 --index:如果服务有多个实例,则为容器的索引。(默认为 1)
  • 🐳 --protocol:端口协议(tcp|udp)(默认“tcp”)

🐳 nerdctl compose ps

列出服务的容器

用法:nerdctl compose ps [OPTIONS] [SERVICE...]

  • 🐳 -a, --all:显示所有容器(默认显示正在运行)
  • 🐳 -q, --quiet:仅显示容器 ID
  • 🐳 --format:格式化输出
    • 🐳 --format=table(默认):表格
    • 🐳 --format=json':JSON
  • 🐳 -f, --filter:根据给定条件过滤容器
    • 🐳 --filter status=<value>:其中之一created, running, paused, restarting, exited, pausing, unknown。请注意,removing, dead不支持并将被忽略
  • 🐳 --services:打印服务名称,每行一个
  • 🐳 --status:按状态过滤容器。值:[暂停 | 重新启动 | 运行 | 已创建 | 已退出 | 暂停 | 未知]

🐳 nerdctl compose pull

拉取服务镜像

用法:nerdctl compose pull [OPTIONS] [SERVICE...]

标志:

  • 🐳 -q, --quiet:拉取但不打印进度信息

未实现(V1 docker-compose pull)标志:--ignore-pull-failures,,,--parallel--no-parallelinclude-deps

🐳 nerdctl 撰写推送

推送服务图像

用法:nerdctl compose push [OPTIONS] [SERVICE...]

未实现docker-compose pull(V1)标志:--ignore-push-failures

🐳 nerdctl compose pause

暂停服务容器内的所有进程。可以使用以下命令取消暂停nerdctl compose unpause

用法:nerdctl compose pause [SERVICE...]

🐳 nerdctl compose unpause

取消暂停服务容器内的所有进程

用法:nerdctl compose unpause [SERVICE...]

🐳 nerdctl 撰写配置

验证并查看 Compose 文件

用法:nerdctl compose config

标志:

  • 🐳 -q, --quiet:拉取但不打印进度信息
  • 🐳 --services:打印服务名称,每行一个。
  • 🐳 --volumes:打印卷名称,每行一个。
  • 🐳 --hash="*":打印服务配置哈希,每行一个。

未实现docker-compose config(V1)标志:--resolve-image-digests--no-interpolate

未实现(V2 docker compose config)标志:--resolve-image-digests,,,,,--no-interpolate--format--output--profiles

🐳 nerdctl compose cp

在服务容器和本地文件系统之间复制文件/文件夹

用法:

<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>nerdctl compose cp [OPTIONS] SERVICE:SRC_PATH DEST_PATH|-
nerdctl compose cp [OPTIONS] SRC_PATH|- SERVICE:DEST_PATH [flags]
</code></span></span></span></span>

标志:

  • 🐳 --dry-run:在试运行模式下执行命令
  • 🐳 -L, --follow-link:始终遵循 SRC_PATH 中的符号链接
  • 🐳 --index int:如果服务有多个副本,则为容器的索引

未实现的docker compose cp标志:--archive

🐳 nerdctl compose kill

强制停止服务容器

用法:nerdctl compose kill [OPTIONS] [SERVICE...]

标志:

  • 🐳 -s, --signal:向容器发送信号(默认:“SIGKILL”)

🐳 nerdctl compose restart

重新启动给定(或所有)服务的容器

用法:nerdctl compose restart [OPTIONS] [SERVICE...]

标志:

  • 🐳 -t, --timeout:重新启动前等待的秒数(默认 10)

🐳 nerdctl 撰写 rm

删除已停止的服务容器

用法:nerdctl compose rm [OPTIONS] [SERVICE...]

标志:

  • 🐳 -f, --force:不提示确认(与 不同-fnerdctl rm表示强制删除)。
  • 🐳 -s, --stop:移除之前先停止容器。
  • 🐳 -v, --volumes:删除与容器关联的匿名卷。

🐳 nerdctl compose 运行

在服务上运行一次性命令

用法:nerdctl compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]

未实现docker-compose run(V1)标志:--use-aliases--no-TTY

未实现(docker compose runV2)标志:--use-aliases,,--no-TTY--tty

🐳 nerdctl 撰写顶部

显示服务容器的运行进程

用法:nerdctl compose top [SERVICES...]

🐳 nerdctl 撰写版本

显示 Compose 版本信息(即 nerdctl 版本)

用法:nerdctl compose version

标志:

  • 🐳 -f, --format:格式化输出。值:[pretty | json](默认“pretty”)
  • 🐳 --short:仅显示 Compose 的版本号

IPFS 管理

P2P 镜像分发(IPFS)完全是可选的。您的主机不连接到任何 P2P 网络,除非您选择安装并运行 IPFS 守护程序

🤓 nerdctl ipfs registry serve

在本地主机上提供由 IPFS 支持的只读注册表。这是nerdctl build从 IPFS 提取基础镜像时需要的。其他命令(例如nerdctl push ipfs://<image-name>nerdctl pull ipfs://<CID>)不需要这个。

您需要ipfs在主机上安装命令。请参阅ipfs.md以了解详细信息。

用法:nerdctl ipfs registry serve [OPTIONS]

标志:

  • 🤓 --ipfs-address:IPFS API 的多地址(默认从文件中提取$IPFS_PATH/api。如果$IPFS_PATH环境变量不存在,则默认为~/.ipfs)。
  • 🤓 --listen-registry:收听地址(默认localhost:5050)。
  • 🤓 --read-retry-num:在 IPFS 上重试查询的次数(默认 0(不重试))
  • 🤓 --read-timeout:对 IPFS 的读取请求的超时时长(默认 0(无超时))

全局标志

  • 🤓 🟦 --address:containerd 地址,可选带“unix://”前缀
  • 🤓 🟦 -a--host-H:已弃用的别名--address
  • 🤓 🟦 --namespace:containerd 命名空间
  • 🤓 🟦 -n:弃用的别名--namespace
  • 🤓 🟦 --snapshotter:containerd 快照程序
  • 🤓 🟦 --storage-driver:弃用的别名--snapshotter
  • 🤓🟦 --cni-path:CNI 二进制路径(默认值:/opt/cni/bin)[ $CNI_PATH]
  • 🤓 🟦 --cni-netconfpath:CNI netconf 路径(默认值/etc/cni/net.d:) [ $NETCONFPATH]
  • 🤓 🟦 --data-root:nerdctl 数据根,例如“/var/lib/nerdctl”
  • 🤓 --cgroup-manager=(cgroupfs|systemd|none):cgroup 管理器
    • 默认值:cgroup v2(rootful 和 rootless)上的“systemd”,v1 rootful 上的“cgroupfs”,v1 rootless 上的“none”
  • 🤓 --insecure-registry:跳过验证 HTTPS 证书,并允许回退到纯 HTTP
  • 🤓 --host-gateway-ip: --add-host 中的特殊 'host-gateway' 字符串解析为的 IP 地址。如果不设置 --add-host,则无效
    • 默认值:主机的 IP 地址

全局标志也可以在/etc/nerdctl/nerdctl.toml(rootful) 和~/.config/nerdctl/nerdctl.toml(rootless) 中指定。请参阅./config.md

未实现的 Docker 命令

容器管理:

  • docker diff
  • docker checkpoint *

图像:

  • docker exportdocker import
  • docker trust *(相反,nerdctl 支持nerdctl pull --verify=cosign|notationnerdctl push --sign=cosign|notation。请参阅./cosign.md./notation.md。)
  • docker manifest *

网管:

  • docker network connect
  • docker network disconnect

注册表:

  • docker search

撰写:

  • docker-compose events|scale

其他的:

  • docker system df
  • docker context
  • Swarm 命令尚未实现,并且不会实现:docker swarm|node|service|config|secret|stack *
  • 插件命令尚未实现且不会被实现:docker plugin *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值