Yazar | Misty Jam
Editör | Tu Min
Üretildi | CSDN Blogu
ne ve neden
Compose projesi, Docker konteyner kümelerinin hızlı bir şekilde düzenlenmesinden sorumlu Docker'ın resmi bir açık kaynaklı projesidir. Daha önce tanıtılan Dockerfile'ı kullanarak tek bir uygulama kabı tanımlamak kolaydır. Bununla birlikte, günlük geliştirme çalışmalarında, çoğu zaman bir görevi tamamlamak için birbiriyle işbirliği yapmak için birden fazla konteyner gerektiren durumlarla karşılaşıyoruz. Örneğin, bir Web projesini uygulamak için, Web hizmeti kabının kendisine ek olarak, genellikle bir arka uç veritabanı hizmet kabı eklemek gerekir; örneğin, dağıtılmış bir uygulama genellikle birkaç hizmet içerir ve her hizmet genellikle birden çok örnek dağıtır. Her hizmetin manuel olarak başlatılması ve durdurulması gerekiyorsa, düşük verimlilik ve büyük miktarda bakım hayal edilebilir. Şu anda, Docker Compose olan bir grup ilgili uygulama kapsayıcısını yönetmek için bir araca ihtiyaç vardır.
Compose'un 2 önemli kavramı vardır:
Proje: docker-compose.yml dosyasında tanımlanan bir dizi ilişkili uygulama kapsayıcısından oluşan eksiksiz bir iş birimi.
Hizmet: Bir uygulama kabı aslında aynı görüntüyü çalıştıran birkaç kapsayıcı örneği içerebilir.
docker yükleme ve kaldırma oluşturuyor
Kurulum
İkili paket çevrimiçi kurulum
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o / usr / local / bin / docker-compose sudo chmod x / usr / local / bin / docker-composeBu yöntem temelde artık çalışmıyor, indirme çok yavaş, tavsiye edilmiyor.
İkili paketlerin çevrimdışı kurulumu
İlgili kurulum paketini https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64 adresinden indirin, örneğin, Linux-x86_64'ü indirdim.
İndirilen kurulum paketini / usr / local / bin / docker-compose dizininde mv / app / download / docker-compose-Linux-x86_64 / usr / local / bin / docker-compose olarak kesin
Yürütme izni ekleyin
sudo chmod x / usr / local / bin / docker-compose
pip kurulumu
Önce pip aracını kurun
Pip sürümünü doğrulayın
Docker oluşturmayı yükle
pip install -U docker-compose == 1.25.0
Docker oluşturma sürümünü doğrulayın
Tamamlama eklentisini yükleyin
curl -L https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-composeKaldır
İkili program kaldırma
rm / usr / local / bin / docker-composepip kaldırma
pip uninstall docker-composeDocker önemli komutlar oluşturur
Komut seçenekleri
-f, --file FILE Kullanılacak Compose şablon dosyasını belirtir Varsayılan, birden çok kez belirtilebilen docker-compose.yml'dir.
-p, --proje-adı İSİM Proje adını belirtin.Varsayılan olarak, dizin adı proje adı olarak kullanılacaktır.
--X-networking, Docker'ın takılabilir ağ arka uç özelliğini kullanır
--X-ağ sürücüsü DRIVER, ağ arka ucunun sürücüsünü belirtir, varsayılan köprüdür
-Verbose daha fazla hata ayıklama bilgisi verir.
-v, --version Sürümü yazdırın ve çıkın.
Yaygın olarak kullanılan önemli komutlar
yapılandırma
Compose dosya formatının doğru olduğunu doğrulayın. Doğruysa, konfigürasyon görüntülenecektir. Format yanlışsa, hatanın nedeni görüntülenecektir.
Docker-compose -f skywalking.yml config gibi
Bu komut gerçek bir işlem gerçekleştirmez, ancak docker-compose programı tarafından ayrıştırılan yapılandırma dosyasının içeriğini görüntüler.
Görüntüler
Compose dosyasında bulunan görüntüleri listeleyin. Docker-compose -f skywalking.yml görüntüleri gibi
ps
Projedeki tüm mevcut konteynerleri listeleyin. Docker-compose -f skywalking.yml ps gibi
inşa etmek
Projedeki hizmet kapsayıcısını oluşturun (yeniden oluşturun). Örneğin: docker-compose -f skywalking.yml build, genellikle yazılı Dockfile gibi özel bir görüntü ile, işlev docker build'ye benzer.
yukarı
Bu komut çok güçlüdür (mastering üzerine odaklanır), bir görüntü oluşturma, bir hizmet (yeniden) oluşturma, hizmeti başlatma ve hizmetle ilgili kapsayıcıları ilişkilendirme gibi bir dizi işlemi otomatik olarak tamamlamaya çalışacaktır. Docker-compose -f skywalking.yml gibi. Varsayılan olarak, docker-compose up tarafından başlatılan kapsayıcılar ön plandadır ve konsol, tüm kapsayıcıların çıktı bilgilerini aynı anda yazdırır, bu da hata ayıklama için çok uygundur.
Docker-compose up -d kullanırsanız, tüm kapsayıcılar arka planda başlatılır ve çalıştırılır. Bu seçeneğin genellikle bir üretim ortamında kullanılması önerilir.
Varsayılan olarak, hizmet kapsayıcısı zaten mevcutsa, docker-compose up, yeni başlatılan hizmetin docker-compose.yml dosyasının en son içeriğiyle eşleştiğinden emin olmak için kapsayıcıyı durdurmaya ve ardından yeniden oluşturmaya çalışır (birimi birimlerden bağlı olarak tutar). . Kullanıcı konteynerin durdurulmasını ve yeniden oluşturulmasını istemiyorsa, docker-compose up --no-repreate komutunu kullanabilirsiniz. Bu, yalnızca durdurulmuş durumda olan kapsayıcıları başlatacak ve zaten çalışmakta olan hizmetleri yok sayacaktır. Kullanıcılar yalnızca belirli bir hizmeti yeniden dağıtmak istiyorsa, docker-compose up --no-deps -d'yi kullanabilirler. < HİZMET ADI > Hizmeti yeniden oluşturmak için eski hizmeti arka planda durdurun ve bağlı olduğu hizmetleri etkilemeden yeni hizmeti başlatın. Bu komut aşağıdaki seçeneklere sahiptir:
: -d, servis konteynerini arka planda çalıştırır.
: --no-color, farklı hizmetlerin konsol çıktısını ayırt etmek için rengi kullanmaz.
: --no-deps Hizmet tarafından bağlanan kapsayıcıyı başlatmayın.
: --force-reate, konteyneri yeniden oluşturulmaya zorlar ve --no-reate ile birlikte kullanılamaz.
: --no-recreate Kap zaten varsa, yeniden oluşturulmaz ve --force-recreate ile birlikte kullanılamaz.
: --no-build eksik hizmet görüntülerini otomatik olarak oluşturmaz.
: -t, --timeout ZAMAN AŞIMI Kabı durdururken zaman aşımı (varsayılan 10 saniyedir).
aşağı
Bu komut, yukarı komutuyla başlatılan kapsayıcıyı durdurur ve docker-compose -f skywalking.yml down gibi ağı kaldırır.
Dur
Biçim, docker-compose stop şeklindedir
Zaten çalışmakta olan kabı durdurun, ancak silmeyin. Bu kapsayıcılar, docker-compose başlatma aracılığıyla yeniden başlatılabilir. Herhangi bir hizmet belirtilmezse, tüm kapsayıcılar varsayılan olarak durdurulur. Docker-compose -f skywalking.yml stop elasticsearch gibi
Seçenekler:
-t, --timeout ZAMAN AŞIMI Konteyner durdurulduğunda zaman aşımı (varsayılan 10 saniyedir).
Başlat
Mevcut servis konteynerini başlatın. Kullanım, docker-compose -f skywalking.yml start elasticsearch gibi yukarıdaki durdurmanın tam tersidir.
tekrar başlat
Projedeki hizmetleri yeniden başlatın. Kullanım, yukarıda dur ve başla ile aynıdır
kütükler
Biçim, docker-compose günlükleridir
Servis kabının çıktısını görüntüleyin. Varsayılan olarak docker-compose, farklı hizmet çıktılarını ayırt etmek için farklı renkler kullanır. Rengi --no-color ile kapatabilirsiniz. Bu komut, sorunları giderirken çok kullanışlıdır. Örneğin, genel günlükleri görüntülemek için docker-compose -f skywalking.yml günlükleri, docker-compose -f skywalking.yml, tek tek kapsayıcıların günlüklerini görüntülemek için elasticsearch'ü günlüğe kaydeder
docker şablon dosyası oluştur
Şablon dosyası, Compose kullanmanın temelidir ve dahil olan birçok talimat anahtar kelimesi vardır. Bu makale temel olarak birkaç yaygın ve önemli talimatı listeler. Diğer talimatlar için Baidu'yu kullanabilirsiniz.
Varsayılan şablon dosya adı docker-compose.yml'dir ve biçim YAML biçimidir.
sürüm: '3' Hizmetler: elasticsearch: resim: elasticsearch: 6.8.5 container_name: elasticsearch yeniden başlat: her zaman ciltler: - / app / skywalking / elasticsearch / data: / usr / share / elasticsearch / data: rw - / app / skywalking / elasticsearch / conf / elasticsearch.yml: /usr/share/elasticsearch/config/elasticsearch.yml - / app / skywalking / elasticsearch / conf / jvm.options: /usr/share/elasticsearch/config/jvm.options - / app / skywalking / elasticsearch / logs: / usr / share / elasticsearch / logs: rw çevre: -TZ = Asya / Şangay -xpack.monitoring.enabled = false -xpack.watcher.enabled = false bağlantı noktaları: - "9200: 9200" - "9300: 9300"Her hizmetin, görüntüyü otomatik olarak oluşturmak için görüntü veya derleme talimatını (Dockerfile gereklidir) belirtmek için görüntü talimatını kullanması gerektiğini unutmayın. Build komutunu kullanırsanız, Dockerfile'da ayarlanan seçenekler (örneğin: CMD, EXPOSE, VOLUME, ENV, vb.) Docker-compose.yml'deki ayarlar tekrarlanmadan otomatik olarak elde edilecektir.
Yaygın olarak kullanılan önemli komutlar
Görüntüler
Ayna adı veya ayna kimliği olarak belirtin. Ayna yerel olarak mevcut değilse, Compose aynayı çekmeye çalışır.
bağlantı noktaları
Bağlantı noktası bilgilerini açığa çıkarın.
Ana bilgisayar bağlantı noktası: kapsayıcı bağlantı noktası (HOST: CONTAINER) biçimini kullanın veya yalnızca kabın bağlantı noktasını belirtin (ana bilgisayar bağlantı noktasını rastgele seçer) Bağlantı noktası dizesi tırnak işaretleri içine alınmış dize biçimini kullanır.
ciltler
Veri biriminin takılacağı yolu ayarlayın. Ana bilgisayar yoluna (HOST: CONTAINER) veya veri hacmi adına (VOLUME: CONTAINER) ayarlanabilir ve erişim modu (HOST: CONTAINER: ro) ayarlanabilir.
Ulimits
Konteynerin ulimits limit değerini belirtin.
Örneğin, belirtilen maksimum işlem sayısı 65535'tir ve belirtilen dosya tanıtıcısı sayısı 20000'dir (yazılım sınırı, uygulama herhangi bir zamanda değiştirilebilir ve sabit sınırı aşamaz) ve 40000 (yalnızca kök kullanıcı tarafından artırılabilen sistem sabit sınırı).
bağlıdır
Kapsayıcı bağımlılığı ve başlatma sırası sorununu çözün. Aşağıdaki örnekte, redis mysql web'den önce başlatılacaktır.
çevre
Ortam değişkenlerini ayarlayın. İki format kullanabilirsiniz: dizi veya sözlük.
tekrar başlat
Kaptan çıktıktan sonra yeniden başlatma stratejisinin her zaman yeniden başlatılacağını belirtir. Bu komut, hizmetin her zaman çalışır durumda tutulması için çok etkilidir ve bir üretim ortamında her zaman olduğu gibi veya durdurulmadıkça yapılandırılması önerilir.
docker-compose savaşı
Öncelikle iki şey önermem gerekiyor:
Docker hızlandırılmış görüntüsünü yapılandırın
/Etc/docker/daemon.json oluşturun veya değiştirin
İde aracınız için docker eklentisini yükleyin
Bu gerçek savaşta, gökyüzü yürüyüşünü örnek olarak dağıtmak için docker-compose kullanıyoruz. Skywalking.yml yazın, içerik aşağıdaki gibidir.
sürüm: '3.3' Hizmetler: elasticsearch: resim: docker.elastic.co/elasticsearch/elasticsearch:6.8.5 container_name: elasticsearch yeniden başlat: her zaman bağlantı noktaları: -9200: 9200 -9300: 9300 çevre: discovery.type: tek düğüm ulimits: memlock: yumuşak: -1 zor: -1 oap: görüntü: gökyüzü yürüyüşü / oap kapsayıcı_adı: oap bağlıdır_on: -elasticsearch bağlantılar: -elasticsearch yeniden başlat: her zaman bağlantı noktaları: -11800: 11800 -12800: 12800 çevre: SW_STORAGE: elasticsearch SW_STORAGE_ES_CLUSTER_NODES: elasticsearch: 9200 ui: görüntü: gökyüzü yürüyüşü / ui kapsayıcı_adı: ui bağlıdır_on: -oap bağlantılar: -oap yeniden başlat: her zaman bağlantı noktaları: -8080: 8080 çevre: SW_OAP_ADDRESS: oap: 12800Dağıtım tamamlandıktan sonra, onu sunucuya yükleyin ve docker-compose -f /app/skywalking.yml up -d komutunu çalıştırın.
Sorumluluk Reddi: Bu makale, CSDN blogger "Mission Jam" in orijinal makalesidir.
100.000 Ali'nin kullanmayı sevdiği çevrimiçi ünlü araç, Yuque "belge güvenliğini korumak için cüzdan koruma teknolojisini nasıl kullanıyor"?
Java istikrarlı bir şekilde büyüdü, Kotlin yükseldi ve Go benzersiz tarzını korudu. 2020'deki başlıca programlama dili geliştirme eğilimlerine genel bakış
PyTorch kaynaklarının harika bir listesi, GitHub Star 9k +, Çince versiyonu da çevrimiçi
"Kütüphaneyi silip kaçmak" gerçekten oldu ve bunu teknik direktör yaptı!
Ortadan kaldırılan teknolojileri kullanmayın! 2020'de yayınlanan en iyi 9 Java çerçevesi! !
31 yaşındaki çocuğun yıllık maaşı 500.000: "İşe döndüğün ilk gün, beni kovduğun için teşekkürler!" Kendine güvenen bir hayatın açıklamaya ihtiyacı yok!