Dockerfile: remove hardcoded platforms for vpnkit stage
As discussed, start splitting https://github.com/moby/moby/pull/43529 into several PRs to ease peer review.

___

Current Dockerfile downloads vpnkit for both linux/amd64 and linux/arm64 platforms even if target platform does not match. This change will download vpnkit only if target platform matches.

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
hack/make/binary-daemon
#!/usr/bin/env bash
set -e

copy_binaries() {
	local dir="$1"

	# Add nested executables to bundle dir so we have complete set of
	# them available, but only if the native OS/ARCH is the same as the
	# OS/ARCH of the build target
	if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
		return
	fi
	if [ ! -x /usr/local/bin/runc ]; then
		return
	fi
	echo "Copying nested executables into $dir"
	for file in containerd containerd-shim-runc-v2 ctr runc docker-init rootlesskit rootlesskit-docker-proxy dockerd-rootless.sh dockerd-rootless-setuptool.sh; do
		cp -f "$(command -v "$file")" "$dir/"
	done

	# vpnkit is available for x86_64 and aarch64
	if command -v "vpnkit.$(uname -m)" 2>&1 > /dev/null; then
		cp -f "$(command -v "vpnkit.$(uname -m)")" "$dir/vpnkit"
	fi
}

[ -z "$KEEPDEST" ] && rm -rf "$DEST"

(
	GO_PACKAGE='github.com/docker/docker/cmd/dockerd'
	BINARY_NAME='dockerd'

	source "${MAKEDIR}/.binary"
	copy_binaries "$DEST"
)

#!/usr/bin/env bash
set -e

copy_binaries() {
	local dir="$1"

	# Add nested executables to bundle dir so we have complete set of
	# them available, but only if the native OS/ARCH is the same as the
	# OS/ARCH of the build target
	if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
		return
	fi
	if [ ! -x /usr/local/bin/runc ]; then
		return
	fi
	echo "Copying nested executables into $dir"
	for file in containerd containerd-shim-runc-v2 ctr runc docker-init rootlesskit rootlesskit-docker-proxy dockerd-rootless.sh dockerd-rootless-setuptool.sh; do
		cp -f "$(command -v "$file")" "$dir/"
	done
	# vpnkit might not be available for the target platform, see vpnkit stage in
	# the Dockerfile for more information.
	if command -v vpnkit > /dev/null 2>&1; then
		cp -f "$(command -v vpnkit)" "$dir/"
	fi
}

[ -z "$KEEPDEST" ] && rm -rf "$DEST"

(
	GO_PACKAGE='github.com/docker/docker/cmd/dockerd'
	BINARY_NAME='dockerd'

	source "${MAKEDIR}/.binary"
	copy_binaries "$DEST"
)

My thinking was that it would explain that the binary may not be there (depending on the architecture), which may not immediately be clear (unless you know), so someone may be wondering "why isn't the binary there?"

That said, we could consider moving this one into the loop above (as it looks like it's now doing the same as above?) and put the comment there.