GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Memasang Direktori Host Ke Wadah Docker

Docker menyediakan alat untuk menjembatani filesystem container dan sistem operasi host yang menjalankan container, seperti bind mount dan volume. Ini bisa sangat berguna baik di lingkungan pengembangan maupun produksi.

Mengapa Mount Dari Host?

Umumnya, dengan Docker, Anda ingin gambar berjalan secara independen dari sistem host. Jika Anda ingin, misalnya, memperbarui kode aplikasi atau file konfigurasi, Anda mungkin ingin membuat versi baru penampung dan men-deploy ulang. Ini memungkinkan Anda menskalakan dan memindahkan gambar dengan cepat tanpa mengkhawatirkan perangkat keras yang digunakan untuk menjalankannya.

Namun, di lingkungan dev, dapat langsung memasang direktori untuk mengaktifkan hot-reload konfigurasi atau kode bisa sangat berguna. Misalnya, Anda mungkin sedang mengerjakan file JS atau plugin PHP yang bisa Anda seret-dan-lepaskan ke dalam wadah. Atau Anda mungkin ingin memasang seluruh direktori konfigurasi NGINX agar berfungsi di situs web Anda. Apa pun kasus penggunaan Anda, memasang file bukanlah solusi yang buruk.

Ini juga berguna dalam produksi, jika Anda memiliki layanan host yang bergantung pada file dalam wadah. Misalnya, Anda mungkin memiliki penyerapan log dan layanan agregasi yang lebih disukai jika file log penampung berada di direktori yang dapat diakses dari host. Meskipun kemungkinan ada beberapa solusi murni dalam Docker untuk masalah Anda, terkadang lebih mudah untuk memasang volume saja.

Kompatibilitas macOS

Catatan:karena mount ditangani melalui Docker API, mereka akan bekerja terlepas dari OS host. Namun, macOS memiliki perlindungan ekstra, dan pemasangan di luar beberapa direktori host mungkin gagal dengan "mount ditolak" saat runtime. Ini termasuk /Users , yang mencakup sebagian besar operasi, tetapi jika perlu, Anda dapat memperbaikinya di setelan Docker di bagian Preferences> Resources> File Sharing dengan menambahkan direktori target ke daftar.

Memasang Direktori Host

Membuat mount bind cukup sederhana. Tambahkan dengan --mount type=bind tandai saat startup, menentukan direktori sumber dan target untuk dipasang.

docker run -d 
-it 
--name container 
--mount type=bind,source=/nginxconfig,target=/etc/nginx 
nginx:latest

Bind mount adalah yang paling sederhana, tetapi Docker menyediakan Volume API untuk mengelola mount semacam ini sedikit lebih baik. Data yang disimpan akan dikelola oleh Docker, dan direktori volume akan dibuat secara otomatis di direktori Docker. Ini mungkin bukan yang Anda inginkan jika Anda memiliki direktori yang ada, tetapi metode ini lebih baik karena tidak bergantung pada struktur file OS host.

docker volume create nginx-config

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

Anda juga dapat menggunakan Docker Compose untuk menentukan volume:

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

Ini disimpan dalam format standar yang dapat diakses oleh Linux:

/var/lib/docker/volumes/volumeID/_data

Namun, di macOS, Anda harus terhubung ke mesin virtual Docker untuk dapat melihat volume.

TERKAIT: Apa Itu Volume Docker, dan Bagaimana Cara Menggunakannya?

Memasang File Tunggal

Memasang seluruh direktori berfungsi dengan baik ketika Anda ingin mengedit banyak file konfigurasi/kode yang disimpan di host. Namun, terkadang Anda mungkin hanya ingin memasang satu file untuk diedit, tanpa menyentuh file lainnya.

Untuk melakukan ini, Anda dapat menjalankan wadah dengan pengikatan mount, yang mendukung file individual jika Anda menentukan jalur:

docker run -it 
--mount type=bind,source=/path/file.cfg,target=/etc/example/file.cfg 
nginx sh

Jika Anda memiliki banyak file untuk dipasang dengan cara ini, Anda dapat meletakkan semuanya di direktori host yang sama, dan memasang direktori tersebut ke lokasi berbeda dalam penampung. Anda kemudian dapat menggunakan symlink di dalam wadah untuk menautkan file di direktori yang dipasang ke lokasi yang tepat.


Docker
  1. Cara Memasang atau Menghubungkan Satu File di Wadah Docker

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Mendaftar Kontainer Docker

  1. Cara Menjalankan MySQL Dalam Wadah Docker

  2. Cara SSH Ke Wadah Docker

  3. Cara Menginstal Vim di Wadah Docker

  1. Belajar Docker:Cara Membuat Wadah Docker

  2. Cara Keluar dari Kontainer Docker

  3. Cara Mengakses Namespace Jaringan Docker Container dari Host