- Dockerfile builds from the latest release published on s3
- localdeb builds from a local deb file
- source builds from source code, you can execute
make dockerized-build
at project root.
- Make sure you are using the edge version instead of stable (btw: they just got merged into one installer)
# NOTE: you need to create a builder, the name does not matter, you have a default one out of box, but that does not work multi-arch
docker buildx create --name multi-builder
docker buildx use multi-builder
# Add proper tag and --push if you want to publish it
docker buildx build --platform linux/amd64,linux/arm64 .
# To build multi arch image from soruce code, run the following at project root
docker buildx build --platform linux/amd64,linux/arm64 -f amazon-cloudwatch-container-insights/cloudwatch-agent-dockerfile/Dockerfile .
If you choose to build x86 and arm images on different machines, and create a multi arch image later. You need to be aware of the following:
- Single arch images should already exists on registry first because the multi arch image is reference to existing images on the registry.
docker buildx
is an exception because it pushes blob to registry without creating a new tag for the single arch images.
- Both docker manifest command and manifest-tool should work,
manifest-tool
does not requires a docker daemon.
Example using docker manifest
# NOTE: manifest is a experimental command, docker versions released after mid 2018 should have it
# enable experimental in your ~/.docker/config.json with:
# {
# "experimental": "enabled"
# }
docker manifest create cloudwatch-agent:foo --amend cloudwatch-agent:foo-arm64 --amend cloudwatch-agent:foo-amd64
docker manifest push cloudwatch-agent:foo
Example using manifest-tool
and ECR, make sure to replace {{account_id}}
and {{aws_region}}
with your AWS account id and region.
# NOTE: the released version of manifest-tool is a bit outdated, you need to build it from source
manifest-tool push from-spec multi-arch-agent.yaml
# multi-arch-agent.yaml
image: {{account_id}}.dkr.ecr.{{aws_region}}.amazonaws.com/cloudwatch-agent:foo
manifests:
- image: {{account_id}}.dkr.ecr.{{aws_region}}.amazonaws.com/cloudwatch-agent:foo-amd64
platform:
architecture: amd64
os: linux
- image: {{account_id}}.dkr.ecr.{{aws_region}}.amazonaws.com/cloudwatch-agent:foo-arm64
platform:
architecture: arm64
os: linux