dockerfile ile docker-compose arasındaki fark Docker'ın kullanım sürecini kısaca anlayalım; bu süreç görüntü oluşturma ve konteyner başlatma olarak ayrılır.
Görüntü oluşturma: yani, kurulum ve işletim için gereken ortamı, program kodunu vb. içeren bir görüntü oluşturmak. Bu oluşturma süreci dockerfile kullanılarak yapılır.
Konteyner Başlatma: Konteyner sonunda oluşturulmuş görüntü çekilerek ve hizmet bir dizi çalışan komut (port eşleme, harici veri montajı, ortam değişkenleri vb.) aracılığıyla başlatılır. Tek bir konteyner için, bu docker run ile çalıştırılabilir.
Birden fazla konteyner çalıştırmayı içeriyorsa (örneğin servis orkestrasyonu), docker-compose ile uygulanabilir; bu da birden fazla konteyneri bir servis olarak kolayca çalıştırabilir (tabii ki sadece bir konteyner) ve ölçekleme (hizmet ölçeklendirme) işlevini sağlar.
Kısa özet:
1.dockerfile: görüntüyü oluşturuyor;
2. Docker Run: Konteyneri başlatmak;
3. docker-compose: Servise başla;
En baştan başla. Docker kullanmıyorsanız, wordpress'i nasıl geliştirirsiniz? Önce bir sunucu bulun, işletim sisteminin Ubuntu olduğunu varsayın ve ardından dokümantasyonu adım adım takip ederek komutu yazıp yapılandırmayı yazın, değil mi? Docker kullanmak ne olacak? Sadece bir sunucu bulun, hangi işletim sistemi olursa olsun, docker'ı desteklediği sürece, docker Ubuntu'yu çalıştırıyor, docker resmi kaynaktan en son Ubuntu imajını çekiyor, bunu Ubuntu sanal makinesini açtığınız gibi düşünebilirsiniz ve adım adım kurabilirsiniz, yukarıda olduğu gibi.
Ancak bu kurulumun önemli bir dezavantajı var: konteyner silindikten sonra hiçbir iş yapılmamış olur. Tabii ki, docker commit kullanarak bunu bir görüntü olarak kaydedebilirsiniz, böylece tekrar kullanılabilir.
Ancak görüntü genellikle büyük olur ve sadece görüntüyü paylaşırsanız, başkaları görselinizin içeriğini bilmez, bu da paylaşmak ve tekrar kullanmak için uygun değildir. Sezgisel bir çözüm, tüm kurulum sürecini kaydeden bir script yazmaktır; böylece tekrar kurduğunuzda scripti çalıştırabilirsiniz. Dockerfile, bir görüntü oluşturma sürecini belgeleyen bu tür bir betiktir. Dockerfile ile sadece docker derlemesini çalıştırın. Bir görsel oluşturabilirsiniz ve Dockerfile metin dosyasıdır, bu da çok kolay değiştirilebilir.
Artık bir WordPress görseliniz var, WordPress'i çalıştırmak için sadece docker çalıştırmanız yeterli.
Sadece WordPress ise, bu yeterli. Ancak çoğu zaman, bir hizmeti başlatmak için nginx, mysql, posta servisi gibi birden fazla görsel gerekir. Daha yaygın olarak, nginx, mysql ve smtp hepsi görüntüdür ve bu görseller birlikte bir projeye hizmet eder. Docker-Compose bu sorunun çözümüdür. Projenizin hangi görüntülere ihtiyacı olduğunu, her görüntüyü nasıl yapılandıracağını, hangi hacimleri monte edeceğinizi ve benzeri bilgileri docker-compose.yml'de yer almaktadır. Bir hizmeti başlatmak için sadece docker-comppose yapmanız yeterli ve durdurmak için docker-compse stop/down yapmanız yeterlidir
Kısacası, bir Dockerfile tek bir görüntünün yapım sürecini kaydeder docker-compse.yml bir projenin yapım sürecini (genellikle birden fazla görüntü) kaydeder.
Bazı eğitimlerin dockerfile+docker-compose kullandığını çünkü docker-compose.yml kendisinin imaj oluşturma hakkında bilgi içermediğini ve eğer görüntü docker kayıt defterinden alındığında dockerfile gerekmediğini söylediniz; Eğer görüntünün oluşturulması gerekiyorsa, bir Dockerfile sağlanmalıdır.
docker-compposeBu bir orkestrasyon konteyneridir. Örneğin, bir php görseliniz, bir mysql göreviniz ve bir nginx göreviniz var. Docker-compose yoksa, her başlattığınızda her konteynerin başlangıç parametrelerini, ortam değişkenlerini, konteyner adını, farklı konteynerlerin bağlantı parametrelerini ve bir dizi işlemi yazmanız gerekir ki bu oldukça zahmetlidir. docker-composer kullandıktan sonra, bu komutları aynı anda docker-composer.yml dosyaya yazabilirsiniz ve tüm ortamı (3 konteyner dahil) her başlattığınızda sadece docker-composer up komutu yazmanız yeterlidir.
dockerfileRol, sıfırdan bir ayna görüntüsü oluşturmaktır. Kurulum ve çalışma için gereken ortamı, program kodunu vb. içerir. Bu oluşturma süreci dockerfile kullanılarak yapılır. Dockerfile - Docker build komutu için hazırlanmış, bağımsız bir görüntü oluşturmak için ayrıca docker-compose ile canlı derleme için de kullanılabilir docker-compose.yml - Docker-Compose için aynı anda birden fazla konteyneri yönetebilen, aralarındaki ilişkileri, resmi bir görüntüyle mi yoksa kendiniz mi oluşturacağınızı bilebilen, çeşitli ağ portu tanımları, depolama alanı tanımları vb. |