How to use nerdctl if you are familiar with Docker CLI
nerdctl is a relatively new command-line client for containerd. Unlike ctr, nerdctl aims to be user-friendly and Docker-compatible. To some extent, nerdctl + containerd can seamlessly replace docker + dockerd. However, [this does not seem to be the main goal of the project(https://medium.com/nttlabs/nerdctl-359311b32d0e)].
From the basic usage standpoint, comparing to ctr, nerdctl supports:
Image building with
nerdctl build(BuildKit required) Container networking managementDocker Compose with
nerdctl compose up
And the coolest part about it isthat nerdctl tries to provide the identical to docker command-line UX. So, if you are familiar with docker CLI,you are allready familiar with nerdctl.
Basic usage
To run a container with the default bridge CNI network (10.4.0.0/24):
# nerdctl run -it --rm alpine
To build an image using BuildKit:
# nerdctl build -t foo /some-dockerfile-directory
# nerdctl run -it --rm foo
To build and send output to a local directory using BuildKit:
# nerdctl build -o type=local,dest=. /some-dockerfile-directory
To run containers from docker-compose.yaml:
# nerdctl compose -f ./examples/compose-wordpress/docker-compose.yaml up
See also [./examples/compose-wordpress](https://github.com/containerd/nerdctl/blob/main/examples/compose-wordpress).
Debugging Kubernetes
To list local Kubernetes containers:
# nerdctl --namespace k8s.io ps -a
To build an image for local Kubernetes without using registry:
# nerdctl --namespace k8s.io build -t foo /some-dockerfile-directory
# kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: foo
image: foo
imagePullPolicy: Never
EOF
To load an image archive (docker save format or OCI format) into local Kubernetes:
# nerdctl --namespace k8s.io load < /path/to/image.tar
To read logs (experimental):
# nerdctl --namespace=k8s.io ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
...
e8793b8cca8b registry.k8s.io/coredns/coredns:v1.9.3 "/coredns -conf /etc…" 2 minutes ago Up k8s://kube-system/coredns-787d4945fb-mfx6b/coredns
...
# nerdctl --namespace=k8s.io logs -f e8793b8cca8b
[INFO] plugin/reload: Running configuration SHA512 = 591cf328cccc12bc490481273e738df59329c62c0b729d94e8b61db9961c2fa5f046dd37f1cf888b953814040d180f52594972691cd6ff41be96639138a43908
CoreDNS-1.9.3
linux/amd64, go1.18.2, 45b0a11
...
Source:
https://labs.iximiuz.com/courses/containerd-cli/nerdctl/nerdctl
https://github.com/containerd/nerdctl/blob/main/README.md
Check:
https://labs.iximiuz.com/courses/containerd-cli/crictl/crictl