VOLUME
Talimat zamanında sizin Docker kapta bir veri hacmini oluşturur. Bir argüman olarak sağlanan VOLUME
dizin, 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>
, Mounts
bölümün altında Source
ana bilgisayardaki Destination
dizin 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, VOLUME
Dockerfile'ınızdaki talimatı belirtmeye benzer .
docker run -v $host_path:$container_path
: Bu, çalışma süresi boyunca $host_path
ana bilgisayarınızdan $container_path
konteynı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_path
ve $container_path
mutlak yollar olmalıdır.
docker run -v my_volume:$container_path
: Bu, adresindeki kapsayıcınızda bir veri birimi oluşturur $container_path
ve 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 ADD
veya COPY
talimatlarını kullanabilirsiniz . Bunlar genellikle geliştirme dışı dağıtım için kullandığım şeylerdir.
COPY
etmek en iyisidirADD
. NeredeyseADD
aynıdırlar , ancak şaşırtıcı olabilecek URL'ler ve arşiv dosyaları için bazı ekstra yetenekleri vardır.