

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

# Gunakan bind mount dengan Amazon ECS
<a name="bind-mounts"></a>

Dengan pemasangan bind, file atau direktori pada host, seperti instans Amazon EC2, dipasang ke dalam wadah. Bind mount didukung untuk tugas yang di-host di instans Fargate dan Amazon EC2. Dudukan pengikat diikat ke siklus hidup wadah yang menggunakannya. Setelah semua kontainer yang menggunakan bind mount dihentikan, seperti saat tugas dihentikan, data akan dihapus. Untuk tugas yang dihosting di instans Amazon EC2, data dapat dikaitkan dengan siklus hidup instans Amazon EC2 host dengan menentukan nilai dan opsional dalam definisi tugas Anda. `host` `sourcePath` Untuk informasi selengkapnya, lihat [Bind mount](https://docs.docker.com/engine/storage/bind-mounts/) 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
<a name="bind-mount-considerations"></a>

Saat menggunakan bind mount, pertimbangkan hal berikut.
+ Secara default, tugas yang di-host saat 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 arahan. `VOLUME` Jika jalur absolut yang ditentukan dalam `VOLUME` direktif sama dengan yang ditentukan dalam definisi tugas, data di jalur `VOLUME` direktif akan disalin ke volume data. `containerPath` 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, saat `sourcePath` nilai `host` dan tidak ditentukan, daemon Docker mengelola pemasangan pengikat untuk Anda. Ketika tidak ada kontainer yang mereferensikan pemasangan pengikat ini, layanan pembersihan tugas agen penampung 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](ecs-agent-config.md). Jika Anda memerlukan data ini untuk bertahan di luar siklus hidup penampung, tentukan `sourcePath` nilai untuk pemasangan pengikat.
+ Untuk tugas yang di-host di Instans Terkelola Amazon ECS, bagian dari sistem file root hanya bisa dibaca. 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 yang berikut:

  ```
  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 di host.

  Untuk melihat daftar lengkap jalur yang dapat ditulis, Anda dapat menjalankan tugas di 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**  
`privileged`Pengaturan memberikan kemampuan yang diperluas pada wadah pada host, setara dengan akses root. Dalam contoh ini, digunakan untuk memeriksa tabel pemasangan host untuk tujuan diagnostik. Untuk informasi selengkapnya, lihat [Hindari menjalankan kontainer sebagai hak istimewa (Amazon EC2)](security-tasks-containers.md#security-tasks-containers-recommendations-avoid-privileged-containers).

  Untuk informasi selengkapnya tentang menjalankan perintah secara interaktif dalam kontainer, lihat[Memantau Kontainer Amazon ECS dengan ECS Exec](ecs-exec.md).