Skip to content

Commit d7b5e3c

Browse files
authored
Merge pull request #4583 from ChengyuZhu6/transfer
Refactor image management to use transfer service
2 parents 0d10893 + 7d8ab7c commit d7b5e3c

26 files changed

Lines changed: 1123 additions & 321 deletions

Dockerfile.d/etc_containerd_config.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,12 @@ version = 2
55
[proxy_plugins.stargz]
66
type = "snapshot"
77
address = "/run/containerd-stargz-grpc/containerd-stargz-grpc.sock"
8+
[proxy_plugins.stargz.exports]
9+
root = "/var/lib/containerd-stargz-grpc/"
10+
enable_remote_snapshot_annotations = "true"
11+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
12+
platform = "linux"
13+
snapshotter = "overlayfs"
14+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
15+
platform = "linux"
16+
snapshotter = "stargz"

Dockerfile.d/test-integration-etc_containerd_config.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,26 @@ version = 2
55
[proxy_plugins.stargz]
66
type = "snapshot"
77
address = "/run/containerd-stargz-grpc/containerd-stargz-grpc.sock"
8+
[proxy_plugins.stargz.exports]
9+
root = "/var/lib/containerd-stargz-grpc/"
10+
enable_remote_snapshot_annotations = "true"
811

912
# Enable soci snapshotter
1013
[proxy_plugins.soci]
1114
type = "snapshot"
1215
address = "/run/soci-snapshotter-grpc/soci-snapshotter-grpc.sock"
16+
[proxy_plugins.soci.exports]
17+
root = "/var/lib/soci-snapshotter-grpc"
18+
enable_remote_snapshot_annotations = "true"
19+
20+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
21+
platform = "linux"
22+
snapshotter = "overlayfs"
23+
24+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
25+
platform = "linux"
26+
snapshotter = "soci"
27+
28+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
29+
platform = "linux"
30+
snapshotter = "stargz"

Dockerfile.d/test-integration-rootless.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ else
5353
[proxy_plugins."stargz"]
5454
type = "snapshot"
5555
address = "/run/user/$(id -u)/containerd-stargz-grpc/containerd-stargz-grpc.sock"
56+
[proxy_plugins.stargz.exports]
57+
root = "/home/rootless/.local/share/containerd-stargz-grpc/"
58+
enable_remote_snapshot_annotations = "true"
59+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
60+
platform = "linux"
61+
snapshotter = "overlayfs"
62+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
63+
platform = "linux"
64+
snapshotter = "stargz"
5665
EOF
5766
systemctl --user restart containerd.service
5867
containerd-rootless-setuptool.sh -- install-ipfs --init --offline # offline ipfs daemon for testing

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ Advanced features:
287287

288288
- [`./docs/stargz.md`](./docs/stargz.md): Lazy-pulling using Stargz Snapshotter
289289
- [`./docs/nydus.md`](./docs/nydus.md): Lazy-pulling using Nydus Snapshotter
290+
- [`./docs/soci.md`](./docs/soci.md): Lazy-pulling using SOCI Snapshotter
290291
- [`./docs/overlaybd.md`](./docs/overlaybd.md): Lazy-pulling using OverlayBD Snapshotter
291292
- [`./docs/ocicrypt.md`](./docs/ocicrypt.md): Running encrypted images
292293
- [`./docs/gpu.md`](./docs/gpu.md): Using GPUs inside containers

cmd/nerdctl/container/container_run_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,7 @@ func TestRunFromOCIArchive(t *testing.T) {
786786
tarPath := fmt.Sprintf("%s/%s.tar", buildCtx, imageName)
787787

788788
base.Cmd("build", "--tag", tag, fmt.Sprintf("--output=type=oci,dest=%s", tarPath), buildCtx).AssertOK()
789-
base.Cmd("run", "--rm", fmt.Sprintf("oci-archive://%s", tarPath)).AssertOutContainsAll(fmt.Sprintf("Loaded image: %s", tag), sentinel)
789+
base.Cmd("run", "--rm", fmt.Sprintf("oci-archive://%s", tarPath)).AssertOutContainsAll(tag, sentinel)
790790
}
791791

792792
func TestRunDomainname(t *testing.T) {

cmd/nerdctl/image/image_load_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package image
1818

1919
import (
20-
"fmt"
2120
"os"
2221
"path/filepath"
2322
"strings"
@@ -61,7 +60,7 @@ func TestLoadStdinFromPipe(t *testing.T) {
6160
identifier := data.Identifier()
6261
return &test.Expected{
6362
Output: expect.All(
64-
expect.Contains(fmt.Sprintf("Loaded image: %s:latest", identifier)),
63+
expect.Contains(identifier),
6564
func(stdout string, t tig.T) {
6665
assert.Assert(t, strings.Contains(helpers.Capture("images"), identifier))
6766
},
@@ -107,7 +106,7 @@ func TestLoadQuiet(t *testing.T) {
107106
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
108107
return &test.Expected{
109108
Output: expect.All(
110-
expect.Contains(fmt.Sprintf("Loaded image: %s:latest", data.Identifier())),
109+
expect.Contains(data.Identifier()),
111110
expect.DoesNotContain("Loading layer"),
112111
),
113112
}

docs/nydus.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ Nydus snapshotter is a remote snapshotter plugin of containerd for [Nydus](https
1515
[proxy_plugins.nydus]
1616
type = "snapshot"
1717
address = "/run/containerd-nydus-grpc/containerd-nydus-grpc.sock"
18+
19+
# Optional: Configure nydus for image unpacking (allows automatic snapshotter selection)
20+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
21+
platform = "linux"
22+
snapshotter = "nydus"
1823
```
1924

2025
- Launch `containerd` and `containerd-nydus-grpc`

docs/overlaybd.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ See https://github.com/containerd/accelerated-container-image to learn further i
1717
[proxy_plugins.overlaybd]
1818
type = "snapshot"
1919
address = "/run/overlaybd-snapshotter/overlaybd.sock"
20+
21+
# Optional: Configure overlaybd for image unpacking (allows automatic snapshotter selection)
22+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
23+
platform = "linux"
24+
snapshotter = "overlaybd"
2025
```
2126

2227
- Launch `containerd` and `overlaybd-snapshotter`

docs/rootless.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ Then, add the following config to `~/.config/containerd/config.toml`, and run `s
7373
type = "snapshot"
7474
# NOTE: replace "1000" with your actual UID
7575
address = "/run/user/1000/containerd-fuse-overlayfs.sock"
76+
77+
# Optional: Configure fuse-overlayfs for image unpacking (allows automatic snapshotter selection)
78+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
79+
platform = "linux"
80+
snapshotter = "fuse-overlayfs"
7681
```
7782

7883
The snapshotter can be specified as `$CONTAINERD_SNAPSHOTTER`.
@@ -98,6 +103,11 @@ Then, add the following config to `~/.config/containerd/config.toml` and run `sy
98103
type = "snapshot"
99104
# NOTE: replace "1000" with your actual UID
100105
address = "/run/user/1000/containerd-stargz-grpc/containerd-stargz-grpc.sock"
106+
107+
# Optional: Configure stargz for image unpacking (allows automatic snapshotter selection)
108+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
109+
platform = "linux"
110+
snapshotter = "stargz"
101111
```
102112

103113
The snapshotter can be specified as `$CONTAINERD_SNAPSHOTTER`.

docs/soci.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ For detailed information about the differences between v1 and v2, see the [SOCI
3030
[proxy_plugins.soci]
3131
type = "snapshot"
3232
address = "/run/soci-snapshotter-grpc/soci-snapshotter-grpc.sock"
33+
34+
# Optional: Configure soci for image unpacking (allows automatic snapshotter selection)
35+
[[plugins."io.containerd.transfer.v1.local".unpack_config]]
36+
platform = "linux"
37+
snapshotter = "soci"
3338
```
3439

3540
- Launch `containerd` and `soci-snapshotter-grpc`

0 commit comments

Comments
 (0)