零基础上手nerdctl:30分钟掌握容器生命周期管理

零基础上手nerdctl:30分钟掌握容器生命周期管理

【免费下载链接】nerdctl contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ... 【免费下载链接】nerdctl 项目地址: https://gitcode.com/gh_mirrors/ne/nerdctl

你是否还在为Docker命令复杂而头疼?是否想快速掌握容器管理却不知从何下手?本文将带你30分钟内从零开始,轻松掌握nerdctl的容器生命周期管理,让你成为容器管理高手。读完本文,你将学会安装配置nerdctl、掌握容器的创建、运行、停止、删除等基本操作,以及使用Compose管理多容器应用和实现Rootless模式增强安全性。

什么是nerdctl

nerdctl是一个与Docker兼容的CLI工具,专为containerd设计,支持Compose、Rootless、eStargz、OCIcrypt、IPFS等功能。它的目标是方便用户体验containerd中那些Docker尚未提供的前沿特性。nerdctl的使用方式与Docker类似,对于熟悉Docker的用户来说,上手nerdctl非常容易。

官方文档:README.md

安装与配置nerdctl

安装依赖

在安装nerdctl之前,需要确保系统中已安装以下组件:

  • CNI plugins:用于nerdctl run命令。推荐使用v1.1.0或更高版本。
  • BuildKit(可选):用于nerdctl build命令。需要运行BuildKit守护进程(buildkitd)。推荐使用v0.11.0或更高版本。
  • RootlessKitslirp4netns(可选):用于Rootless模式。RootlessKit需要v0.10.0或更高版本,推荐v2.0.0或更高版本;slirp4netns需要v0.4.0或更高版本,推荐v1.1.7或更高版本。

这些依赖在nerdctl-full-<VERSION>-<OS>-<ARCH>.tar.gz中包含,但在nerdctl-<VERSION>-<OS>-<ARCH>.tar.gz中不包含。

安装nerdctl

Linux系统(Brew)

在Linux系统上,可以通过brew安装nerdctl:

brew install nerdctl
macOS系统

Lima项目为macOS提供了Linux虚拟机,并内置了nerdctl集成。安装命令如下:

$ brew install lima
$ limactl start
$ lima nerdctl run -d --name nginx -p 127.0.0.1:8080:80 nginx:alpine
从源码编译

如果你想从源码编译nerdctl,可以按照以下步骤进行:

make && sudo make install

编译依赖:go.mod

配置nerdctl

nerdctl的配置文件可以在/etc/nerdctl/nerdctl.toml~/.config/nerdctl/nerdctl.toml中进行设置。你可以根据自己的需求配置镜像仓库、网络、存储等参数。

配置指南:docs/config.md

容器基本操作

拉取镜像

使用nerdctl pull命令拉取镜像,例如拉取alpine镜像:

# nerdctl pull alpine

运行容器

使用nerdctl run命令运行容器,例如以交互方式运行alpine容器:

# nerdctl run -it --rm alpine

其中,-it表示交互式终端,--rm表示容器退出后自动删除。

命令参考:docs/command-reference.md

查看容器

使用nerdctl ps命令查看正在运行的容器:

# nerdctl ps

加上-a选项可以查看所有容器(包括已停止的):

# nerdctl ps -a

停止容器

使用nerdctl stop命令停止容器,需要指定容器ID或名称:

# nerdctl stop <container_id_or_name>

启动容器

使用nerdctl start命令启动已停止的容器:

# nerdctl start <container_id_or_name>

删除容器

使用nerdctl rm命令删除容器:

# nerdctl rm <container_id_or_name>

如果要强制删除正在运行的容器,可以加上-f选项:

# nerdctl rm -f <container_id_or_name>

使用Compose管理多容器应用

nerdctl支持Docker Compose,你可以使用nerdctl compose命令来管理多容器应用。首先,创建一个docker-compose.yaml文件,定义应用的服务、网络、卷等配置。

例如,一个简单的WordPress应用的docker-compose.yaml文件如下:

version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data:

然后,使用以下命令启动应用:

# nerdctl compose -f docker-compose.yaml up -d

其中,-d表示后台运行。

Compose教程:examples/compose-wordpress

Rootless模式增强安全性

Rootless模式允许在非root用户下运行容器,增强了系统的安全性。要启用Rootless模式,需要使用containerd-rootless-setuptool.sh脚本进行设置。

安装Rootless containerd

$ containerd-rootless-setuptool.sh install
[INFO] Checking RootlessKit functionality
[INFO] Checking cgroup v2
[INFO] Checking overlayfs
[INFO] Creating /home/testuser/.config/systemd/user/containerd.service
...
[INFO] Installed containerd.service successfully.
[INFO] To control containerd.service, run: `systemctl --user (start|stop|restart) containerd.service`
[INFO] To run containerd.service on system startup, run: `sudo loginctl enable-linger testuser`

[INFO] Use `nerdctl` to connect to the rootless containerd.
[INFO] You do NOT need to specify $CONTAINERD_ADDRESS explicitly.

Rootless文档:docs/rootless.md

在Rootless模式下运行容器

安装完成后,直接使用nerdctl命令即可在Rootless模式下运行容器:

$ nerdctl run -d -p 8080:80 --name nginx nginx:alpine

容器生命周期管理实战

下面通过一个完整的示例,演示容器的生命周期管理。

1. 拉取镜像

# nerdctl pull nginx:alpine

2. 运行容器

# nerdctl run -d -p 8080:80 --name mynginx nginx:alpine

3. 查看容器状态

# nerdctl ps

4. 访问容器服务

在浏览器中访问http://localhost:8080,可以看到Nginx的默认页面。

5. 查看容器日志

# nerdctl logs mynginx

6. 进入容器

# nerdctl exec -it mynginx sh

7. 停止容器

# nerdctl stop mynginx

8. 启动容器

# nerdctl start mynginx

9. 重启容器

# nerdctl restart mynginx

10. 删除容器

# nerdctl rm -f mynginx

总结与展望

通过本文的学习,你已经掌握了nerdctl的基本使用方法,包括安装配置、容器基本操作、使用Compose管理多容器应用以及Rootless模式的配置和使用。nerdctl作为一个与Docker兼容的CLI工具,为containerd用户提供了便捷的容器管理方式。

未来,nerdctl还将不断发展,支持更多的新特性和功能。建议你关注nerdctl的官方仓库,及时了解最新的更新和动态。

希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言。记得点赞、收藏、关注三连,下期我们将带来更多关于容器技术的精彩内容!

【免费下载链接】nerdctl contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ... 【免费下载链接】nerdctl 项目地址: https://gitcode.com/gh_mirrors/ne/nerdctl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值