diff options
author | Sebastiaan van Stijn <github@gone.nl> | 2023-04-29 02:49:35 +0200 |
---|---|---|
committer | Sebastiaan van Stijn <github@gone.nl> | 2023-04-29 02:53:54 +0200 |
commit | 9613da63dc63be3a7897573ecda0ae3ee6cb7433 (patch) | |
tree | 00cb3d019240a98dc0e9fc9d89e32e30bdc7e1e6 /daemon | |
parent | e22758bfb2d615f67512336f121c677d099b3269 (diff) | |
download | docker-9613da63dc63be3a7897573ecda0ae3ee6cb7433.tar.gz |
c8d: commit: generateCommitImageConfig: don't merge image config
daemon.CreateImageFromContainer() already constructs a new config by taking
the image config, applying custom options (`docker commit --change ..`) (if
any), and merging those with the containers' configuration, so there is
no need to merge options again.
https://github.com/moby/moby/blob/e22758bfb2d615f67512336f121c677d099b3269/daemon/commit.go#L152-L158
This patch removes the merge logic from generateCommitImageConfig, and
removes the unused arguments and error-return.
Co-authored-by: Djordje Lukic <djordje.lukic@docker.com>
Co-authored-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/containerd/image_commit.go | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/daemon/containerd/image_commit.go b/daemon/containerd/image_commit.go index f163aa1fb2..e9dc49d921 100644 --- a/daemon/containerd/image_commit.go +++ b/daemon/containerd/image_commit.go @@ -19,7 +19,6 @@ import ( "github.com/containerd/containerd/rootfs" "github.com/containerd/containerd/snapshots" "github.com/docker/docker/api/types/backend" - containerapi "github.com/docker/docker/api/types/container" "github.com/docker/docker/errdefs" "github.com/docker/docker/image" "github.com/opencontainers/go-digest" @@ -81,10 +80,7 @@ func (i *ImageService) CommitImage(ctx context.Context, cc backend.CommitConfig) return "", fmt.Errorf("failed to export layer: %w", err) } - imageConfig, err := generateCommitImageConfig(ctx, container.Config, ociimage, diffID, cc) - if err != nil { - return "", fmt.Errorf("failed to generate commit image config: %w", err) - } + imageConfig := generateCommitImageConfig(ociimage, diffID, cc) rootfsID := identity.ChainID(imageConfig.RootFS.DiffIDs).String() if err := applyDiffLayer(ctx, rootfsID, ociimage, sn, differ, diffLayerDesc); err != nil { @@ -116,14 +112,9 @@ func (i *ImageService) CommitImage(ctx context.Context, cc backend.CommitConfig) return image.ID(img.Target.Digest), nil } -// generateCommitImageConfig returns commit oci image config based on the container's image. -func generateCommitImageConfig(ctx context.Context, container *containerapi.Config, baseConfig ocispec.Image, diffID digest.Digest, opts backend.CommitConfig) (ocispec.Image, error) { - if opts.Config.Cmd != nil { - baseConfig.Config.Cmd = opts.Config.Cmd - } - if opts.Config.Entrypoint != nil { - baseConfig.Config.Entrypoint = opts.Config.Entrypoint - } +// generateCommitImageConfig generates an OCI Image config based on the +// container's image and the CommitConfig options. +func generateCommitImageConfig(baseConfig ocispec.Image, diffID digest.Digest, opts backend.CommitConfig) ocispec.Image { if opts.Author == "" { opts.Author = baseConfig.Author } @@ -145,7 +136,7 @@ func generateCommitImageConfig(ctx context.Context, container *containerapi.Conf OS: os, Created: &createdTime, Author: opts.Author, - Config: baseConfig.Config, + Config: containerConfigToOciImageConfig(opts.Config), RootFS: ocispec.RootFS{ Type: "layers", DiffIDs: append(baseConfig.RootFS.DiffIDs, diffID), @@ -157,7 +148,7 @@ func generateCommitImageConfig(ctx context.Context, container *containerapi.Conf Comment: opts.Comment, EmptyLayer: diffID == "", }), - }, nil + } } // writeContentsForImage will commit oci image config and manifest into containerd's content store. |