nerdctl + buildkitd 构建Containerd容器镜像

  • buildkit-v0.11.4.linux-amd64.tar.gz
  • nerdctl-1.2.1-linux-amd64.tar.gz

nerdctl 操作

实战:Containerd高级命令行工具nerdctl安装及使用
https://mdnice.com/writing/c57c45c557bf46b0835958134892abc4

k8s部署springboot应用 nerdctl构建
https://blog.csdn.net/wangxin_wangxin/article/details/128736157

nerdctl build 制作镜像
[root@k8s-master /]# nerdctl build -f dockerfile_company -t lyndon1107/company:latest .
[+] Building 11.6s (9/9)                                                                                                                                                                                                  
[+] Building 11.7s (9/9) FINISHED                                                                                                                                                                                         
 => [internal] load .dockerignore                                                                                                                                                                                    0.0s
 => => transferring context: 2B                                                                                                                                                                                      0.0s
 => [internal] load build definition from dockerfile_company                                                                                                                                                         0.0s
 => => transferring dockerfile: 560B                                                                                                                                                                                 0.0s
 => [internal] load metadata for docker.io/library/centos:latest                                                                                                                                                     2.1s
 => [auth] library/centos:pull token for registry-1.docker.io                                                                                                                                                        0.0s
 => [1/3] FROM docker.io/library/centos:latest@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177                                                                                               0.0s
 => => resolve docker.io/library/centos:latest@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177                                                                                               0.0s
 => [internal] load build context                                                                                                                                                                                    0.0s
 => => transferring context: 106B                                                                                                                                                                                    0.0s
 => CACHED [2/3] ADD jdk-8u333-linux-x64.tar.gz /usr/local/                                                                                                                                                          0.0s
 => CACHED [3/3] ADD /v5-test-service-0.0.1-SNAPSHOT.jar /usr/local/                                                                                                                                                 0.0s
 => exporting to docker image format                                                                                                                                                                                 9.3s
 => => exporting layers                                                                                                                                                                                              0.0s
 => => exporting manifest sha256:83d08d938bbe766d5d2aa15022296543ff82deb8f1080f488385a8c4d268d75b                                                                                                                    0.0s
 => => exporting config sha256:eb84a8b41b798c0afbeeb16be280f0b2dfd16c31f603133d014b4337d7389303                                                                                                                      0.0s
 => => sending tarball                                                                                                                                                                                               9.3s
Loaded image: docker.io/lyndon1107/company:latest
查看镜像
[root@k8s-master /]# nerdctl images
REPOSITORY            TAG       IMAGE ID        CREATED           PLATFORM       SIZE         BLOB SIZE
jenkins/jenkins       lts       8656eb80548f    6 days ago        linux/amd64    474.2 MiB    278.7 MiB
lyndon1107/company    latest    83d08d938bbe    21 seconds ago    linux/amd64    660.9 MiB    277.5 MiB

运行容器
[root@k8s-master /]# nerdctl run -d -p 8099:8099 --name company lyndon1107/company
WARN[0000] duplicate network name "cbr0", &netutil.NetworkConfig{NetworkConfigList:(*libcni.NetworkConfigList)(0xc0002ef4a0), NerdctlID:(*string)(nil), NerdctlLabels:(*map[string]string)(nil), File:"/etc/cni/net.d/10-flannel.conf"} will get superseded by &netutil.NetworkConfig{NetworkConfigList:(*libcni.NetworkConfigList)(0xc0002ef560), NerdctlID:(*string)(nil), NerdctlLabels:(*map[string]string)(nil), File:"/etc/cni/net.d/10-flannel.conflist"} 
WARN[0000] duplicate network name "cbr0", &netutil.NetworkConfig{NetworkConfigList:(*libcni.NetworkConfigList)(0xc0002ef9e0), NerdctlID:(*string)(nil), NerdctlLabels:(*map[string]string)(nil), File:"/etc/cni/net.d/10-flannel.conf"} will get superseded by &netutil.NetworkConfig{NetworkConfigList:(*libcni.NetworkConfigList)(0xc0002efaa0), NerdctlID:(*string)(nil), NerdctlLabels:(*map[string]string)(nil), File:"/etc/cni/net.d/10-flannel.conflist"} 
2fb70e42a8d5e8fe462c001e824d927132c84384ea353aaa18103e106da2ca09

查看容器
[root@k8s-master /]# nerdctl ps
CONTAINER ID    IMAGE                                  COMMAND                   CREATED          STATUS    PORTS                     NAMES
2fb70e42a8d5    docker.io/lyndon1107/company:latest    "java -jar /usr/loca…"    2 minutes ago    Up        0.0.0.0:8099->8099/tcp    company

登录 访问服务
[root@k8s-master /]# nerdctl exec -it company bash
[root@2fb70e42a8d5 /]#
[root@2fb70e42a8d5 /]# exit
exit


[root@k8s-master /]# curl -X POST http://localhost:8099/test/queryList
{"success":true,"result":"SUCCESS","code":0,"msg":"成功","obj":""}
推送到仓库
[root@k8s-master /]# nerdctl push lyndon1107/company:latest

INFO[0000] pushing as a reduced-platform image (application/vnd.docker.distribution.manifest.v2+json, sha256:83d08d938bbe766d5d2aa15022296543ff82deb8f1080f488385a8c4d268d75b) 
manifest-sha256:83d08d938bbe766d5d2aa15022296543ff82deb8f1080f488385a8c4d268d75b: done           |++++++++++++++++++++++++++++++++++++++| 
config-sha256:eb84a8b41b798c0afbeeb16be280f0b2dfd16c31f603133d014b4337d7389303:   done           |++++++++++++++++++++++++++++++++++++++| 
elapsed: 363.2s                                                                   total:  4.1 Ki (11.0 B/s)                                        

nerdctl 安装

Containerd 官方推出了一个新的 CLI 叫 nerdctl。Containerd高级命令行工具nerdctl。
nerdctl 的目标并不是单纯地复制 docker 的功能,它还实现了docker 不具备的功能,例如延迟拉取镜像(lazy-pulling)、镜像加密(imgcrypt)等。

下载地址 https://developer.aliyun.com/article/1094835

# 下载nerdctl到指定目录
## -c 断点续传, -P 下载到指定目录
wget -c -P /usr/local/ https://github.com/containerd/nerdctl/releases/download/v1.2.1/nerdctl-1.2.1-linux-amd64.tar.gz
# 创建nerdctl对应bin目录
mkdir -p /usr/local/containerd/bin
# 解压nerdctl到指定路径
tar -xvf nerdctl-1.1.0-linux-amd64.tar.gz -C /usr/local/containerd/bin/
# 创建软链接
ln -s /usr/local/containerd/bin/nerdctl /usr/local/bin/nerdctl
# 查看是否安装成功
which nerdctl
------------------------------------------------------------
[root@k8s-master bin]# nerdctl --version
nerdctl version 1.2.1

[root@k8s-master bin]# nerdctl version
Client:
 Version:	v1.2.1
 OS/Arch:	linux/amd64
 Git commit:	a0bbfd75ba92bcb11ac6059bf4f6f4e50c6da0b8
 buildctl:
  Version:	v0.11.4
  GitCommit:	3abd1ef0c195cdc078d1657cb50f62a2cdc26f8f

Server:
 containerd:
  Version:	1.6.18
  GitCommit:	2456e983eb9e37e47538f59ea18f2043c9a73640
 runc:
  Version:	1.1.4
  GitCommit:	v1.1.4-0-g5fd4c4d
------------------------------------------------------------

1、容器管理
nerdctl run # 运行容器
nerdctl exec # 进入容器
nerdctl ps #列出容器
nerdctl inspect #获取容器的详细信息。
nerdctl logs #获取容器日志
nerdctl stop #停止容器
nerdctl rm #删除容器

3、镜像管理
nerdctl images #镜像列表
nerdctl pull #拉取镜像
nerdctl push #推送镜像
nerdctl tag #镜像标签
nerdctl save #导出镜像
nerdctl rmi #删除镜像
nerdctl load #导入镜像

#镜像构建(安装buildkit)
nerdctl build -t 构建目录

#从 Dockerfile 构建镜像
nerdctl build #其实是使用了 buildctl 命令来构建镜像

# 构建镜像时不使用缓存(默认值:false)
nerdctl build --no-cache 

nerdctl ns ls 查看名字空间,这和K8s的名字空间不是一回事,其中default就是containerd的默认名字空间,http://k8s.io是K8s的名字空间

#查看网络
[root@k8s-master /]# nerdctl network ls
NETWORK ID    NAME    FILE
              cbr0    /etc/cni/net.d/10-flannel.conf
              cbr0    /etc/cni/net.d/10-flannel.conflist
              host    
              none 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值