Kendi cevabımı ekleyeyim, çünkü diğerlerinin Docker'ın amacını kaçırdığına inanıyorum.
VOLUME
Dockerfile'da kullanmak Right Way ™ 'dir, çünkü Docker'a belirli bir dizinin kalıcı veriler içerdiğini bildirmiş olursunuz. Docker, bu veriler için bir birim oluşturur ve onu kullanan tüm kapsayıcıları kaldırsanız bile onu asla silmez.
Ayrıca, birleşim dosya sistemini atlar, böylece birim aslında onu paylaşan tüm kapsayıcılarda doğru yere bağlanan (okuma-yazma veya salt okunur) gerçek bir dizindir.
Şimdi, bu verilere ana bilgisayardan erişmek için, yalnızca kapsayıcınızı incelemeniz gerekir:
# 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
}
}]
Genelde yaptığım şey , / srv gibi bazı standart yerlerde sembolik bağlantılar oluşturmaktır , böylece birimlere kolayca erişebilir ve içerdikleri verileri yönetebilirim (yalnızca ilgilendiğiniz birimler için):
ln -s /var/lib/docker/vfs/dir/b3ef4bc28fb39034dd7a3aab00e086e6... /srv/myapp-www
ln -s /var/lib/docker/vfs/dir/71896ce364ef919592f4e99c6e22ce87... /srv/myapp-log