diff --git a/plugins/providers/docker/driver.rb b/plugins/providers/docker/driver.rb index 9fd0fac4f..460c744e0 100644 --- a/plugins/providers/docker/driver.rb +++ b/plugins/providers/docker/driver.rb @@ -31,6 +31,10 @@ module VagrantPlugins # In this case, docker buildkit is enabled. Its format is different # from standard docker matches = result.scan(/writing image .+:([^\s]+)/i).last + if !matches + # Check for outout of docker using containerd backend store + matches = result.scan(/exporting manifest list .+:([^\s]+)/i).last + end if !matches if podman? # Check for podman format when it is emulating docker CLI. diff --git a/test/unit/plugins/providers/docker/driver_test.rb b/test/unit/plugins/providers/docker/driver_test.rb index 2abb0c03d..f68bf52ea 100644 --- a/test/unit/plugins/providers/docker/driver_test.rb +++ b/test/unit/plugins/providers/docker/driver_test.rb @@ -207,6 +207,16 @@ describe VagrantPlugins::DockerProvider::Driver do end end + context "using buildkit with containerd backend output" do + let(:stdout) { "exporting manifest list sha256:1a2b3c4d done" } + + it "builds a container with buildkit docker (containerd)" do + container_id = subject.build("/tmp/fakedir") + + expect(container_id).to eq(cid) + end + end + context "using podman emulating docker CLI" do let(:stdout) { "1a2b3c4d5e6f7g8h9i10j11k12l13m14n16o17p18q19r20s21t22u23v24w25x2" }