View a markdown version of this page

Gunakan mount bind dengan Amazon ECS - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan mount bind dengan Amazon ECS

Dengan bind mount, file atau direktori pada host, seperti instance Amazon EC2, dipasang ke dalam wadah. Bind mount didukung untuk tugas yang dihosting di instans Fargate dan Amazon EC2. Bind mount terikat dengan siklus hidup wadah yang menggunakannya. Setelah semua wadah yang menggunakan bind mount dihentikan, seperti ketika tugas dihentikan, data dihapus. Untuk tugas yang dihosting di instans Amazon EC2, data dapat dikaitkan dengan siklus hidup instans Amazon EC2 host dengan menentukan sourcePath nilai host dan opsional dalam definisi tugas Anda. Untuk informasi selengkapnya, lihat Bind mount di dokumentasi Docker.

Berikut ini adalah kasus penggunaan umum untuk pemasangan terikat.

  • Untuk menyediakan volume data kosong untuk memasang dalam satu atau lebih kontainer.

  • Untuk memasang volume data host dalam satu atau lebih kontainer.

  • Untuk berbagi volume data dari kontainer sumber dengan kontainer lain dalam tugas yang sama.

  • Untuk mengekspos jalur dan isinya dari Dockerfile ke satu atau lebih kontainer.

Pertimbangan saat menggunakan pemasangan terikat

Saat menggunakan bind mount, pertimbangkan hal berikut.

  • Secara default, tugas yang dihosting AWS Fargate menggunakan versi platform 1.4.0 atau yang lebih baru (Linux) 1.0.0 atau yang lebih baru (Windows) menerima minimal 20 GiB penyimpanan sementara untuk bind mount. Anda dapat meningkatkan jumlah total penyimpanan sementara hingga maksimum 200 GiB dengan menentukan ephemeralStorage parameter dalam definisi tugas Anda.

  • Untuk mengekspos file dari Dockerfile ke volume data saat tugas dijalankan, bidang data Amazon ECS mencari direktif. VOLUME Jika jalur absolut yang ditentukan dalam direk VOLUME tif sama dengan yang containerPath ditentukan dalam definisi tugas, data di jalur direk VOLUME tif disalin ke volume data. Dalam contoh Dockerfile berikut, file yang diberi nama examplefile dalam /var/log/exported direktori ditulis ke host dan kemudian dipasang di dalam wadah.

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

    Secara default, izin volume diatur ke 0755 dan pemilik sebagai root. Anda dapat menyesuaikan izin ini di Dockerfile. Contoh berikut mendefinisikan pemilik direktori sebagai 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"]
  • Untuk tugas yang dihosting di instans Amazon EC2, ketika sourcePath nilai host dan tidak ditentukan, daemon Docker mengelola bind mount untuk Anda. Jika tidak ada wadah yang mereferensikan pemasangan bind ini, layanan pembersihan tugas agen kontainer Amazon ECS akhirnya menghapusnya. Secara default, ini terjadi tiga jam setelah wadah keluar. Namun, Anda dapat mengonfigurasi durasi ini dengan variabel ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION agen. Untuk informasi selengkapnya, lihat Konfigurasi agen kontainer Amazon ECS. Jika Anda membutuhkan data ini untuk bertahan di luar siklus hidup wadah, tentukan sourcePath nilai untuk bind mount.

  • Untuk tugas yang dihosting di Instans Terkelola Amazon ECS, bagian dari sistem file root bersifat read-only. Read/write bind mount harus menggunakan direktori yang dapat ditulis seperti /var untuk data persisten atau /tmp untuk data sementara. Mencoba membuat read/write bind mount ke direktori lain mengakibatkan tugas gagal diluncurkan dengan kesalahan yang mirip dengan berikut ini:

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

    Read-only bind mount (dikonfigurasi dengan "readOnly": true mountPoints parameter) dapat menunjuk ke direktori yang dapat diakses pada host.

    Untuk melihat daftar lengkap jalur yang dapat ditulis, Anda dapat menjalankan tugas pada Instans Terkelola Amazon ECS dan menggunakannya untuk memeriksa tabel pemasangan instans. Buat definisi tugas dengan pengaturan berikut untuk mengakses sistem file host:

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

    Kemudian jalankan perintah berikut dari dalam wadah:

    # 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
    penting

    Peng privileged aturan ini memberikan kemampuan kontainer yang diperluas pada host, setara dengan akses root. Dalam contoh ini, digunakan untuk memeriksa tabel pemasangan host untuk tujuan diagnostik. Untuk informasi selengkapnya, lihat Hindari menjalankan wadah sebagai hak istimewa (Amazon EC2).

    Untuk informasi selengkapnya tentang menjalankan perintah secara interaktif dalam wadah, lihatMemantau Kontainer Amazon ECS dengan ECS Exec.