Utilizzo di montaggio vincolato con Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di montaggio vincolato con Amazon ECS

Con i montaggi vincolati, un file o una directory su un host, ad esempio un'istanza Amazon EC2, sono montati in un container. I montaggi vincolati sono supportati per le attività ospitate su istanze Fargate o Amazon EC2. I montaggi vincolati sono legati al ciclo di vita del container che li utilizza. Una volta arrestati tutti i container che utilizzano un montaggio vincolato, ad esempio quando viene arrestata un'attività, i dati vengono rimossi. Per le attività ospitate su istanze Amazon EC2, i dati possono essere legati al ciclo di vita dell'istanza Amazon EC2 host specificando un host e un valore sourcePath facoltativo nella definizione di attività. Per ulteriori informazioni, consultare Bind mounts nella documentazione Docker.

I seguenti sono casi d'uso comune dei montaggi vincolati.

  • Per fornire un volume di dati vuoto da montare in uno o più container.

  • Per fornire un volume di dati host in uno o più container.

  • Per condividere un volume di dati da un container di origine con altri container nello stesso processo.

  • Per esporre un percorso e il relativo contenuto da un Dockerfile a uno o più container.

Considerazioni su quando utilizzare i montaggi vincolati

Quando usi i montaggi vincolati, tieni presente le seguenti considerazioni.

  • Per impostazione predefinita, le attività ospitate AWS Fargate utilizzando una versione della piattaforma 1.4.0 o successiva (Linux) 1.0.0 o successiva (Windows) ricevono un minimo di 20 GiB di storage temporaneo per i bind mount. Puoi aumentare la quantità totale di archiviazione temporanea fino a un massimo di 200 GiB, specificando il parametro ephemeralStorage nella definizione di attività.

  • Per esporre i file da un Dockerfile a un volume di dati quando viene eseguito un processo, il piano dati di Amazon ECS cerca una direttiva VOLUME. Se il percorso assoluto specificato nella direttiva VOLUME è lo stesso presente nel containerPath specificato nella definizione di attività, i dati nel percorso della direttiva VOLUME vengono copiati sul volume di dati. Nell'esempio Dockerfile seguente, un file denominato examplefile nella directory /var/log/exported viene scritto sull'host e quindi montato all'interno del container.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN mkdir -p /var/log/exported RUN touch /var/log/exported/examplefile VOLUME ["/var/log/exported"]

    Di default, le autorizzazioni dei volumi sono impostate su 0755 e il proprietario è root. Queste autorizzazioni possono essere personalizzate nel Dockerfile. L'esempio seguente definisce il proprietario della directory come node.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install -y shadow-utils && yum clean all RUN useradd node RUN mkdir -p /var/log/exported && chown node:node /var/log/exported RUN touch /var/log/exported/examplefile USER node VOLUME ["/var/log/exported"]
  • Per le attività ospitate su istanze Amazon EC2, quando non sono specificati i valori host e sourcePath, il daemon Docker gestisce il montaggio vincolato per tuo conto. Quando nessun container fa riferimento a questo montaggio vincolato, viene alla fine eliminato dal servizio di pulizia dell'attività dell'agente del container Amazon ECS. Per impostazione predefinita, ciò avviene tre ore dopo la chiusura del container. Tuttavia, puoi configurare questa durata con la variabile dell'agente ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION. Per ulteriori informazioni, consulta Configurazione dell'agente del container Amazon ECS. Se è necessario che questi dati vengano conservati oltre il ciclo di vita del container, specifica un valore sourcePath per il montaggio vincolato.

  • Per le attività ospitate su Amazon ECS Managed Instances, parti del filesystem root sono di sola lettura. Read/write i bind mount devono utilizzare directory scrivibili, ad esempio per dati persistenti o temporanei. /var /tmp Il tentativo di creare read/write bind mount su altre directory comporta l'impossibilità di avviare l'attività con un errore simile al seguente:

    error creating empty volume: error while creating volume path '/path': mkdir /path: read-only file system

    I bind mount di sola lettura (configurati nel mountPoints parametro) possono puntare "readOnly": true a qualsiasi directory accessibile sull'host.

    Per visualizzare un elenco completo di percorsi scrivibili, puoi eseguire un'attività su un'istanza gestita di Amazon ECS e utilizzarla per ispezionare la tabella di montaggio dell'istanza. Crea una definizione di attività con le seguenti impostazioni per accedere al filesystem host:

    { "pidMode": "host", "containerDefinitions": [{ "privileged": true, ... }] }

    Quindi esegui i seguenti comandi dall'interno del contenitore:

    # List writable mounts cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^rw,/ || $4 == "rw" {print $2}' | sort # List read-only mounts cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^ro,/ || $4 == "ro" {print $2}' | sort
    Importante

    L'privilegedimpostazione concede al contenitore funzionalità estese sull'host, equivalenti all'accesso root. In questo esempio, viene utilizzata per ispezionare la tabella di montaggio dell'host a fini diagnostici. Per ulteriori informazioni, consulta Evitare l'esecuzione di container con privilegi (Amazon EC2).

    Per ulteriori informazioni sull'esecuzione interattiva dei comandi nei contenitori, vedere. Monitora i container Amazon ECS con ECS Exec