Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

CloudWatch Agent Dockerfiles

Multi arch image

Build multi arch image on mac

# 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 source code, run the following at project root
docker buildx build --platform linux/amd64,linux/arm64 -f amazon-cloudwatch-container-insights/cloudwatch-agent-dockerfile/Dockerfile .

Build multi arch image manifest from single arch images

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

References