Biarkan saya menambahkan jawaban saya sendiri, karena saya percaya yang lain kehilangan titik Docker.
Penggunaan VOLUME
di Dockerfile adalah Right Way ™, karena Anda memberi tahu Docker bahwa direktori tertentu berisi data permanen. Docker akan membuat volume untuk data itu dan tidak pernah menghapusnya, bahkan jika Anda menghapus semua kontainer yang menggunakannya.
Ini juga mem-bypass sistem file gabungan, sehingga volume sebenarnya adalah direktori aktual yang akan dipasang (baca-tulis atau baca-saja) di tempat yang tepat di semua wadah yang membagikannya.
Sekarang, untuk mengakses data dari host, Anda hanya perlu memeriksa wadah Anda:
# docker inspect myapp
[{
.
.
.
"Volumes": {
"/var/www": "/var/lib/docker/vfs/dir/b3ef4bc28fb39034dd7a3aab00e086e6...",
"/var/cache/nginx": "/var/lib/docker/vfs/dir/62499e6b31cb3f7f59bf00d8a16b48d2...",
"/var/log/nginx": "/var/lib/docker/vfs/dir/71896ce364ef919592f4e99c6e22ce87..."
},
"VolumesRW": {
"/var/www": false,
"/var/cache/nginx": true,
"/var/log/nginx": true
}
}]
Apa yang biasanya saya lakukan adalah membuat symlink di beberapa tempat standar seperti / srv , sehingga saya dapat dengan mudah mengakses volume dan mengelola data yang dikandungnya (hanya untuk volume yang Anda pedulikan):
ln -s /var/lib/docker/vfs/dir/b3ef4bc28fb39034dd7a3aab00e086e6... /srv/myapp-www
ln -s /var/lib/docker/vfs/dir/71896ce364ef919592f4e99c6e22ce87... /srv/myapp-log