Docker-Compose temelleri ve gerçek savaş, sadece bunu okuyun | Güç Projesi

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-compose

Bu 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

# Kurulum bağımlılıkları yum -y epel sürümünü yükle #Install PIP yum -y python-pip yükle # Yükseltme PIP pip install --upgrade pip
  • Pip sürümünü doğrulayın

# pip - sürüm /usr/lib/python2.7/site-packages (python 2.7) 'den pip 8.1.2
  • Docker oluşturmayı yükle

    pip install -U docker-compose == 1.25.0

  • Docker oluşturma sürümünü doğrulayın

# docker-compose --version docker-compose sürüm 1.25.0, derleme b42d419

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-compose

Kaldır

İkili program kaldırma

rm / usr / local / bin / docker-compose

pip kaldırma

pip uninstall docker-compose

Docker ö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.

görüntü: apache / skywalking-oap-server: 6.5.0 görüntü: apache / skywalking-ui: 6.5.0
  • 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.

bağlantı noktaları: - "3000" - "8080: 8080" - "127.0.0.1:8001:8001"
  • 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.

ciltler: - / app / skywalking / elasticsearch / data: / usr / share / elasticsearch / data: rw -conf / elasticsearch.yml: /usr/share/elasticsearch/config/elasticsearch.yml sürüm: "3" Hizmetler: my_src: resim: mysql: 8.0 ciltler: -mysql_data: / var / lib / mysql ciltler: mysql_data:
  • 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ı).

ulimits: nproc: 65535 dosya yok: yumuşak: 20000 zor: 40000
  • 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.

sürüm: '3' Hizmetler: ağ: inşa etmek:. bağlıdır_on: -db -redis redis: görüntü: redis db: resim: mysql
  • çevre

    Ortam değişkenlerini ayarlayın. İki format kullanabilirsiniz: dizi veya sözlük.

çevre: SW_STORAGE: elasticsearch SW_STORAGE_ES_CLUSTER_NODES: elasticsearch: 9200 çevre: -SW_STORAGE = elasticsearch -SW_STORAGE_ES_CLUSTER_NODES = elasticsearch: 9200
  • 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.

yeniden başlat: her zaman

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

sudo mkdir -p / etc / docker sudo tee /etc/docker/daemon.json < < -'EOF ' { "kayıt aynaları": } EOF sudo systemctl daemon yeniden yükleme sudo systemctl yeniden başlatma docker
  • İ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: 12800

Dağı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!

Savaş Salgını · "Ka" da Aşk Var
önceki
Poyang, Jiangxi: Önleme ve Kontrol "Geçici Parti Şubesi" köy sakinlerinin sağlığına eşlik ediyor
Sonraki
iPhone 93 Nisan'da piyasaya sürülebilir; Kopyala ve yapıştırın babası Larry Tesler vefat etti; Android 11 geliştirici önizlemesi burada! | Geek Başlıklar
Savaş Salgını · Jiashan Sıcak! 240'dan fazla parti üyesi ve genç gönüllü bedava kan bağışlıyor
Kaynak kodunu okumak geliştiriciler için önemli mi?
Savaş Salgını Jiashan28 gün ve gece, kuru fırının kart noktası başarıyla kaldırıldı
sadece! 2019 Küresel AI Raporu yayınlandı, bu 8 pozisyon 2020'de popüler olacak
Programcının pişmanlığı: Veri analizini neden erken öğrenmedim?
Komik: "Dize eşleme algoritması" nasıl optimize edilir?
Wuhan'da 10 adet daha kare kabinli hastane inşa edilecek ve Hankou'daki kuzey kabin hastanesi bugün teslim edilecek
Bu yeterli! Bizans Generalleri Sorunu'nu bir makalede anlayın
Evden çalışmanın buz kıranı
100.000 Ali'nin kullanmayı sevdiği çevrimiçi ünlü araç ne kadar harika?
Eve Hoşgeldin! Üç "röle", Wucheng işe dönüş özel treni bugün kalkıyor
To Top