Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Docker en una muestra de imagen personalizada para CodeBuild
Este ejemplo compila y ejecuta una imagen de Docker utilizando AWS CodeBuild y una imagen de compilación de Docker personalizada (docker:dind
en Docker Hub).
Para aprender a crear una imagen de Docker utilizando en su lugar una imagen de compilación proporcionada por CodeBuild el soporte de Docker, consulte nuestroEjemplo de Docker.
La ejecución de este ejemplo puede producir cargos en su cuenta de AWS. Estos incluyen los posibles cargos por CodeBuild y porAWS los recursos y acciones relacionados con Amazon S3 y CloudWatch Logs.AWS KMS Para obtener más información, consulte CodeBuild precios, precios
Ejecución del ejemplo
Para ejecutar este ejemplo
-
Cree los archivos como se describe en las secciones «Estructura de directorios» y «Archivos» de este tema y, a continuación, cárguelos en un depósito de entrada de S3 o en unAWS CodeCommit repositorio de Bitbucket. GitHub
importante No cargue
, solo los archivos incluidos en(root directory name)
.(root directory name)
Si utiliza un bucket de entrada de S3, no olvide crear un archivo ZIP que contenga los archivos y cárguelo en el bucket de entrada. No añada
al archivo ZIP, solo los archivos incluidos en(root directory name)
.(root directory name)
-
Cree un proyecto de compilación, ejecute la compilación y consulte información de la compilación relacionada siguiendo los pasos de Ejecutar AWS CodeBuild directamente.
Si usa la AWS CLI para crear el proyecto de compilación, es posible que el resultado con formato JSON del comando
create-project
tenga un aspecto similar al siguiente. (Sustituya los marcadores de posición por sus propios valores).{ "name": "sample-docker-custom-image-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/DockerCustomImageSample
.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "docker:dind", "computeType": "BUILD_GENERAL1_SMALL", "privilegedMode": true }, "serviceRole": "arn:aws:iam::account-ID
:role/role-name
", "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:key/key-ID
" }nota De forma predeterminada, los contenedores Docker no permiten el acceso a ningún dispositivo. El modo privilegiado otorga acceso al contenedor Docker de un proyecto de compilación a todos los dispositivos. Para obtener más información, consulte la sección sobre privilegios en tiempo de ejecución y capacidades de Linux
en el sitio web de Docker Docs. -
Para ver los resultados de compilación, busque en el log de la compilación la cadena
Hello, World!
Para obtener más información, consulte Ver detalles de las compilaciones.
Estructura de directorios
En este ejemplo se presupone que existe esta estructura de directorios.
(root directory name)
├── buildspec.yml
└── Dockerfile
Archivos
La imagen base del sistema operativo utilizado en este ejemplo es Ubuntu. El ejemplo usa los siguientes archivos. Para obtener más información acerca del controlador de almacenamiento de OverlayFS al que se hace referencia en el archivo buildspec, consulte Use the OverlayFS storage driver
buildspec.yml
(in
)(root directory
name)
version: 0.2 phases: install: commands: - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done" pre_build: commands: - docker build -t helloworld . build: commands: - docker images - docker run helloworld echo "Hello, World!"
Si el sistema operativo base es Alpine Linux, en el buildspec.yml
añada el argumento -t
a timeout
:
- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
Dockerfile
(in
)(root directory
name)
FROM maven:3.3.9-jdk-8 RUN echo "Hello World"
Recursos relacionados
Para obtener información acerca de cómo empezar a trabajar con AWS CodeBuild, consulte Empezar a trabajar con AWS CodeBuild utilizando la consola.
Para obtener información acerca de la solución de problemas CodeBuild de, consulteSolución de problemas de AWS CodeBuild.
Para obtener información sobre las cuotas en CodeBuild, consulteCuotas para AWS CodeBuild.