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

Cara mengakses file di luar wadah Docker

Jika kontainer diisolasi, bagaimana mereka bisa berkomunikasi dengan mesin host, mungkin untuk menyimpan data? Karena saat kita membuat penampung dari sebuah gambar, semua data yang dihasilkan akan hilang saat penampung dihapus.

Jadi kita perlu cara untuk memiliki penyimpanan permanen.

Kita dapat melakukannya menggunakan Bind Mounts dan Volume .

Tidak banyak perbedaan antara keduanya, kecuali Bind Mounts dapat menunjuk ke folder mana pun di komputer host, dan tidak dikelola oleh Docker secara langsung.

Mari kita mulai dengan mereka. Salah satu contoh klasik adalah log. Misalkan aplikasi Anda membuat file log, di dalam wadah, di /usr/src/app/logs . Anda dapat memetakannya ke folder di mesin host, menggunakan -v (sama seperti --volume ) tandai saat Anda menjalankan wadah dengan docker run , seperti ini:-v ~/logs:/usr/src/app/logs

Ini akan memetakan folder tersebut ke subfolder log di direktori home pengguna.

Simpul:-m atau --mount flag bekerja dengan cara yang sangat mirip

Ini adalah bendera yang digunakan dengan examplenode gambar yang kita buat sebelumnya:

docker run -d -p 80:3000 -v ~/logs:/usr/src/app/logs --name node-app examplenode

Jadi sekarang kita dapat menjalankan aplikasi Node kita, dan log apa pun akan disimpan di komputer host, bukan di dalam wadah Docker.

Perhatikan bahwa examplenode aplikasi tidak menghasilkan log masuk /usr/src/app/logs , itu hanya sebuah contoh dan Anda harus mengatur pencatatan itu terlebih dahulu.

Detail tentang volume akan dicantumkan saat Anda menjalankan docker inspect pada nama penampung, di bawah “Mounts”:

"Mounts": [
    {
        "Type": "bind",
        "Source": "/Users/flavio/logs",
        "Destination": "/usr/src/app/logs",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

Dapatkah Anda melihat "Type": "bind" ? Itu artinya kita telah membuat bind mount .

Sekarang, mari kita bicara tentang Volume .

Perbedaan antara Bind Mounts dan Volumes adalah bahwa dengan membuat volume, Docker akan menyimpan data dalam folder yang dikelolanya, yang berarti ia akan mengurus izin dan kepemilikan file, dan itu akan memberi Anda alat untuk mengelola volume tersebut. Meskipun pengikatan mount didasarkan pada jalur sistem file, dan Docker tidak dapat menyediakan alat di sekitarnya.

Misalnya, Docker memungkinkan Anda menghapus semua volume yang tidak digunakan dengan menjalankan docker volume prune atau docker system prune --volumes .

Untuk membuat volume, pertama-tama kita harus menjalankan docker volume create :

docker volume create logs

Sekarang Anda dapat menggunakan docker volume ls dan docker volume inspect untuk mendapatkan lebih banyak data tentang volume sistem:

Sekarang jalankan docker run dengan opsi -v logs:/usr/src/app/logs (beri tahu nama volume alih-alih folder)

docker run -d -p 80:3000 -v logs:/usr/src/app/logs --name node-app examplenode

Sekarang jalankan docker inspect pada gambar akan menunjukkan volume terpasang:

"Mounts": [
    {
        "Type": "volume",
        "Name": "logs",
        "Source": "/var/lib/docker/volumes/logs/_data",
        "Destination": "/usr/src/app/logs",
        "Driver": "local",
        "Mode": "z",
        "RW": true,
        "Propagation": ""
    }
],

Lihat? Sekarang log akan disimpan di /var/lib/docker/volumes/logs/_data folder.

Volume akan menjadi penting ketika tiba waktunya untuk men-deploy container di layanan cloud, misalnya.

Anda dapat menghapus volume yang menjalankan docker volume rm <name> .


Docker
  1. Cara menginstal WordPress menggunakan Docker

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Mendaftar Kontainer Docker

  1. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  2. Cara Menjalankan MySQL Dalam Wadah Docker

  3. Cara Keluar dari Kontainer Docker

  1. Cara SSH Ke Wadah Docker

  2. Cara Menginstal Vim di Wadah Docker

  3. Cara Mengakses Namespace Jaringan Docker Container dari Host