-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Description
Description
Hey folks - apologies if this is the wrong place, but this is the repository that the docs on go.dev linked me to.
I'm trying to use the Go SDK to run an image build, but run into issues when calling ImageBuild
. When using a Dockerfile that specifies a base image in a private Artifactory instance, it immediately fails with this message: failed to resolve source metadata for <imageName>: no active sessions
on the line containing the FROM
statement.
Strangely, I am able to run ImagePull
to pull those base images down beforehand just fine, and if I do so then ImageBuild
works for as long as the images are present on the machine. However, this isn't a complete solution because I don't know what base images are present in the Dockerfile before I do the build (I can parse it, sure, but I'd rather avoid doing so if possible).
I haven't had much luck in figuring out what's going on here - my searches have suggested it's due to a lack of authentication, but I can pull down the images using ImagePull
just fine without authentication. Regardless, I did try adding in an AuthConfig
value to the ImageBuildOptions struct, but without any luck. I've included an example of how I'm constructing all this in the code in the "Reproduce" section.
The problem does not occur if I use a public base image (e.g mcr.microsoft.com/dotnet/aspnet:8.0) - it's only when I use my private repository.
The Docker package I pull into my application is github.com/docker/docker
, version is v27.0.2+incompatible
Reproduce
dockerClient, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
tar, err := archive.TarWithOptions(directory, &archive.TarOptions{})
opts := types.ImageBuildOptions{
SuppressOutput: false,
PullParent: true,
Dockerfile: "Dockerfile",
Tags: []string{imageTag},
Version: types.BuilderBuildKit,
Platform: "linux/amd64",
AuthConfigs: map[string]registry.AuthConfig{
"<repoUrl>": {
Username: user, // Artifactory username, should be ignored if I understand right
Password: pass, // Artifactory API token
ServerAddress: "https://<repoUrl>",
},
},
}
response, err := dockerClient.ImageBuild(context.TODO(), tar, opts)
Expected behavior
The Docker SDK should build the image without requiring the base images to be pulled down already.
docker version
Client:
Version: 26.1.4
API version: 1.45
Go version: go1.21.11
Git commit: 5650f9b
Built: Wed Jun 5 11:29:54 2024
OS/Arch: windows/amd64
Context: desktop-linux
Server: Docker Desktop 4.31.1 (153621)
Engine:
Version: 26.1.4
API version: 1.45 (minimum version 1.24)
Go version: go1.21.11
Git commit: de5c9cf
Built: Wed Jun 5 11:29:22 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.33
GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info
Client:
Version: 26.1.4
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.1-desktop.1
Path: C:\Program Files\Docker\cli-plugins\docker-buildx.exe
compose: Docker Compose (Docker Inc.)
Version: v2.27.1-desktop.1
Path: C:\Program Files\Docker\cli-plugins\docker-compose.exe
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.32
Path: C:\Program Files\Docker\cli-plugins\docker-debug.exe
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.2
Path: C:\Program Files\Docker\cli-plugins\docker-dev.exe
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.24
Path: C:\Program Files\Docker\cli-plugins\docker-extension.exe
feedback: Provide feedback, right in your terminal! (Docker Inc.)
Version: v1.0.5
Path: C:\Program Files\Docker\cli-plugins\docker-feedback.exe
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.2.0
Path: C:\Program Files\Docker\cli-plugins\docker-init.exe
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: C:\Program Files\Docker\cli-plugins\docker-sbom.exe
scout: Docker Scout (Docker Inc.)
Version: v1.9.3
Path: C:\Program Files\Docker\cli-plugins\docker-scout.exe
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 5
Server Version: 26.1.4
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
Kernel Version: 5.15.133.1-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 31.19GiB
Name: docker-desktop
ID: 5b0b02f0-a10f-4504-94c3-bb1770571649
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=npipe://\\.\pipe\docker_cli
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile
Additional Info
No response