VOLUMETalimat zamanında sizin Docker kapta bir veri hacmini oluşturur. Bir argüman olarak sağlanan VOLUMEdizin, Birlik Dosya Sistemini atlayan bir dizindir ve esas olarak kalıcı ve paylaşılan veriler için kullanılır.
Çalıştırırsanız docker inspect <your-container>, Mountsbölümün altında Sourceana bilgisayardaki Destinationdizin konumunu ve kapsayıcıdaki bağlanmış dizin konumunu temsil eden bir göreceksiniz . Örneğin,
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
İşte 3 kullanım durumu docker run -v:
docker run -v /data: Bu, VOLUMEDockerfile'ınızdaki talimatı belirtmeye benzer .
docker run -v $host_path:$container_path: Bu, çalışma süresi boyunca $host_pathana bilgisayarınızdan $container_pathkonteynırınıza bağlamanızı sağlar . Geliştirme aşamasında bu, ana makinenizdeki kaynak kodunu kapsayıcıyla paylaşmak için kullanışlıdır. Üretimde bu, ana bilgisayarın DNS bilgileri (içinde bulunur /etc/resolv.conf) veya sırlar gibi şeyleri kapsayıcıya bağlamak için kullanılabilir . Tersine, bu tekniği, kapsayıcının günlüklerini ana bilgisayardaki belirli klasörlere yazmak için de kullanabilirsiniz. Her ikisi de $host_pathve $container_pathmutlak yollar olmalıdır.
docker run -v my_volume:$container_path: Bu, adresindeki kapsayıcınızda bir veri birimi oluşturur $container_pathve onu adlandırır my_volume. Temelde kullanarak bir birimi oluşturmak ve adlandırmakla aynıdır docker volume create my_volume. Bir birimi bu şekilde adlandırmak, Flocker gibi çok ana bilgisayarlı bir depolama sürücüsü kullanan bir konteyner veri hacmi ve paylaşılan bir depolama birimi için kullanışlıdır .
Bir ana bilgisayar klasörünü veri birimi olarak bağlama yaklaşımının Dockerfile'da kullanılamadığına dikkat edin. Docker belgelerinden alıntı yapmak için ,
Not: Bu, taşınabilirliği ve paylaşım amacı nedeniyle bir Dockerfile'da mevcut değildir. Ana bilgisayar dizini doğası gereği ana bilgisayara bağımlı olduğundan, bir Dockerfile'da belirtilen bir ana bilgisayar dizini muhtemelen tüm ana bilgisayarlarda çalışmayacaktır.
Artık dosyalarınızı geliştirme dışı ortamlarda kapsayıcılara kopyalamak istiyorsanız , Dockerfile'ınızdaki ADDveya COPYtalimatlarını kullanabilirsiniz . Bunlar genellikle geliştirme dışı dağıtım için kullandığım şeylerdir.
COPYetmek en iyisidirADD. NeredeyseADDaynıdırlar , ancak şaşırtıcı olabilecek URL'ler ve arşiv dosyaları için bazı ekstra yetenekleri vardır.