Yazar | Masada Mingyue
Sorumlu Editör | Yu Yan
Üretildi | CSDN (ID: CSDNnews)
Önsöz
Bir şeyi öğrenmek için önce onu nasıl kullanacağınızı anlamalısınız. Ve onu kullanan bazı işletim terimleri. Bu bir araba öğrenmek için sürücü kursuna gitmek gibidir.Koç önce size bunun direksiyon simidi olduğunu, bu gaz pedalının ve bunun da fren olduğunu söyler.Kritik anlarda hayatınızı kurtarabileceğinizi unutmamalısınız. Sonra size arabayı nasıl çalıştıracağınızı ve yavaşça koşacağınızı öğretmeye başlayın. Bu makale, Docker'ın Demo düzeyindeki işlemlerin basit kullanımını hızlı bir şekilde anlamak için SpringBoot'u dağıtmak için Docker'ı kullanır. Bu belgeyi yeni başlayanlara vermek istiyorum.
Bu makale sayesinde şunları öğreneceksiniz:
Docker ve Docker terminolojisi nedir
Docker kurulumu
Hızlıca SprngBoot projeleri oluşturun
SprngBoot projesi Dockerization
Docker'ı ve ilgili terimleri anlayın
Docker, programları izole eden ve paketleyen bir konteyner teknolojisidir ve aynı zamanda "hafif" sanallaştırma teknolojisi olarak da bilinir.
Docker söz konusu olduğunda, üç bilgi noktasından bahsetmemiz gerekiyor: Ayna, konteyner, depo Docker'ın öğrenmesi gereken üç öğe, özel kodları ne anlama geliyor? Dinle bana yavaş yavaş söyle.
Ayna: Bir kök dosya sistemine eşdeğerdir. Örneğin, resmi ayna ubuntu: 16.04, Ubuntu 16.04 minimal sisteminin kök dosya sisteminin eksiksiz bir setini içerir. Konteyneri başlatmak için bir şablon olarak anlaşılabilir
konteyner : Konteyner aslında özel bir süreçtir. Docker, süreç için bağımsız bir alanı böler
depo : Ayna görüntülerini depolamaya ayrılmış bir depo olarak anlaşılabilecek ayna görüntülerini depolamak için kullanılır.
Görüntü (Görüntü) ve kap (Konteyner) arasındaki ilişki, nesne yönelimli programlamada bir sınıf ve örnek gibidir Görüntü statik bir tanımdır ve kapsayıcı, çalışma zamanında görüntünün varlığını ifade eder. Konteynerler oluşturulabilir, başlatılabilir, durdurulabilir, silinebilir, askıya alınabilir vb.
Dockerfile: Derleme dosyası aracılığıyla özel bir görüntü oluşturabilirsiniz.
Gerçek işlem
Docker'ı yükleyin
Bir hesap kaydetmeniz gerekmesi koşuluyla, indirme ve kurulum için kurulum paketini indirmek için doğrudan https://hub.docker.com/ adresine gidebilirsiniz. Ayrıca çaylağın kurulum eğitimine de doğrudan başvurabilirsiniz:
Windows kurulum eğitimi: https://www.runoob.com/docker/windows-docker-install.html
Win7, win8 ve win10 sistemlerinin kurulum yapılandırması farklıdır, ayrıntılar için lütfen çaylak kurulum eğitimine bakın
MacOS Docker kurulumu: https://www.runoob.com/docker/macos-docker-install.html
Çaylak öğretici Mac kurulum öğreticisinin iki kurulum paketi bağlantısı sağladığına dikkat edilmelidir: kenar ve kararlı Bu iki kurulum paketi arasındaki farklar aşağıdaki gibidir:
kenar: erken benimseyen sürümü ayda bir yayınlanır, bazı sorunlar olabilir
kararlı: kararlı sürüm, nispeten kararlı sürüm olarak her çeyrek güncellenir
Yeni başlayanlar, kurulum için kararlı indirmeyi önerir.
Docker görüntü hızlandırmayı yapılandırın
Görev çubuğundaki docker simgesine tıklayın ve ardından Ayarlar'a tıklayın ve aşağıdaki şekilde gösterildiği gibi görüntü hızlandırma adresini yapılandırın.
Diğer sistem yapılandırma yöntemleri için lütfen çaylak eğitimine bakın:
https://www.runoob.com/docker/docker-mirror-acceleration.html
İsteğe bağlı ayna hızlandırma adresleri aşağıdaki gibidir:
Docker tarafından sağlanan resmi Çin ayna kitaplığı adresi: https://registry.docker-cn.com
Qiniu bulut hızlandırıcı adresi: https://reg-mirror.qiniu.com
NetEase'in yansıtma adresi:
Alibaba Cloud Mirror Adresi: Her Alibaba Cloud hesabı benzersiz bir adres sağlar
SpringBoot projesini derleyin ve Dockerize edin
Adım 1: Bir maven projesi oluşturun ve ardından SpringBoot'un Ebeveyn bağımlılığını tanıtın.
< ebeveyn > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-ebeveyn < / artifactId > < versiyon > 2.1.0. YAYIN < / version > < göreceli yol/ > < / ebeveyn >Adım 2: SpringBoot web stateri bağımlılığını tanıtın.
< bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-web < / artifactId > < /bağımlılık >Adım 3: SpringBoot projesinin yürütülebilir jar paketinin adını yapılandırmak için finalName etiketini derleme etiketine ekleyin. Spesifik kod aşağıdaki gibidir:
< finalName > demo < / finalName >Pom.xml'nin özel içeriği aşağıdaki gibidir:
< ? xml version = "1.0" encoding = "UTF-8"? > < proje xmlns = " xmlns: xsi = " xsi: schemaLocation = "http: // maven.apache.org/POM/4.0.0 " > < modelVersion > 4.0.0 < / modelVersion > < ebeveyn > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-ebeveyn < / artifactId > < versiyon > 2.1.0. YAYIN < / version > < göreceli yol/ > < ! - depodan ebeveyn araması - > < / ebeveyn > < Grup kimliği > org.example < /Grup kimliği > < artifactId > demo < / artifactId > < versiyon > 1.0-SNAPSHOT < / version > < bağımlılıklar > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-web < / artifactId > < /bağımlılık > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > yay önyükleme başlangıç testi < / artifactId > < dürbün > Ölçek < /dürbün > < /bağımlılık > < / bağımlılıklar > < inşa etmek > < finalName > demo < / finalName > < eklentiler > < Eklenti > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-maven-eklentisi < / artifactId > < /Eklenti > < ! - 5. jdk'yi belirtmek için eklenti ekleyin - > < Eklenti > < artifactId > maven-derleyici eklentisi < / artifactId > < konfigürasyon > < kaynak > 1.8 < /kaynak > < hedef > 1.8 < /hedef > < çatal > doğru < /çatal > < / configuration > < /Eklenti > < / plugins > < /inşa etmek > < / proje >Adım 4: SpringBoot'un başlangıç sınıfını oluşturun src / main / java dizininde, özel kod aşağıdaki gibidir:
paket cn.zhuoqianmingyue.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplicationpublic sınıfı DemoApplication { public static void main (String argümanları) {SpringApplication.run (DemoApplication.class, args);} }Adım 5: Test için bir Kontrolör oluşturun. Spesifik kod aşağıdaki gibidir:
paket cn.zhuoqianmingyue.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestControllerpublic class HelloDockerController {@GetMapping ("/ hello") public String merhaba {return "merhaba docker";}}Adım 6: Demo projesinde bir Dockerfile oluşturun, belirli içerik aşağıdaki gibidir:
# FROM Özel ayna, java: 8 aynasına göre oluşturulur. JAVA'DAN: 8 # MAINTAINER Yazarın bilgileri BAKICI zhuoqianmingyue ljk126wy@126.com# KOPYALA Hedef dizindeki demo.jar dosyasını özel görüntüye kopyalayın. COPY target / demo.jar /demo.jar# Çalışan program tarafından yürütülen komut, komut penceresinde java -jar demo.jarENTRYPOINT komutunun çalıştırılmasına eşdeğerdir.Adım 7: Demo projesinde imajı oluşturmak için build.sh betiğini oluşturun. Spesifik içerik aşağıdaki gibidir:
#! / usr / bin / env bash # SpringBoot projesi mvn paketini paketleyin # Bir ayna docker build -t demosu oluşturun: geçerli dizindeki Dockerfile yapılandırma dosyasına göre en son.demo: latest: demo görüntünün adını, en yenisi sürüm numarasını temsil eder.
Projenin dizin yapısı aşağıda gösterilmiştir:
Adım 8: Build.sh öğesini seçin ve ardından komut dosyasını çalıştırmak için sağ tıklayıp Build.sh çalıştır öğesini seçin.
Yürütmeden sonra, oluşturulan görüntüyü docker görüntüleri aracılığıyla görüntüleyebilirsiniz.
Demo: en son görüntü aracılığıyla bir kapsayıcı başlatma komutu aşağıdaki gibidir:
docker run -idt -p 8080: 8080 demo: en sondocker run, kapsayıcıyı çalıştırmak için görüntüye dayanır
-i Konteyneri genellikle -t ile birlikte kullanılan etkileşimli modda çalıştırın.
-t, genellikle -i ile kullanılan bir sözde giriş uçbirimini konteyner için yeniden atar.
-d Kapsayıcıyı arka planda çalıştırın ve kapsayıcı kimliğini döndürür.
-p Bağlantı noktası eşlemesini belirtir, biçim şu şekildedir: ana bilgisayar (ana bilgisayar) bağlantı noktası: konteyner bağlantı noktası.
demo: en son görüntü adı: görüntü sürüm numarası.
docker ps çalışan görüntüyü görüntüleyin
CONTAINER_ID: Kapsayıcı Kimliği
GÖRÜNTÜ: belirli görüntü
COMMOND: Çalışan program tarafından yürütülen komut
DURUM: kabın durumu
PORTS: Konteyner tarafından eşlenen bağlantı noktası
İSİMLER: konteynerin adı
Docker günlüğü -f kapsayıcı kimliği aracılığıyla SpringBoot projesinin başlangıç günlüğünü görüntüleyin. Belirli işlemler aşağıdaki gibidir.
Docker üzerinden bir konteyner başlatan Windows, bir Linux sanal makinesi oluşturmak ve programımızı sanal makinede çalıştırmak olarak anlaşılabilir. Konteynere docker exec -it container ID / bin / bash (Linux'un sanal makinesine girmek olarak da anlaşılabilir) üzerinden girebilirsiniz. SpringBoot projesine sanal makinede yerel olarak erişmek ve çalıştırmak için curl localhost: 8080 / hello çalıştırın. Belirli işlemler aşağıdaki gibidir:
Docker, bir Linux sanal makinesi oluşturmaya eşdeğer olduğundan, yerel ana bilgisayarı doğrudan tarayıcı üzerinden çalıştırarak erişilemez. Bu problem nedeniyle, Baidu'nun girişinin çoğu, docker-machine ip default'u çalıştırarak sanal makinenin ipini görüntülemektir, ancak onu çalıştırdıktan sonra şuna benzer:
Komut, docker-machine ls aracılığıyla kontrol etmemizi öneriyor, belirli işlemler aşağıdaki gibidir:
Sanal makinenin ip'i docker-machine ile elde edilmemesine rağmen başka bir yöntemle elde ettim.Özel işlemler şu şekildedir:
Docker sanal ana bilgisayarının ipini görüntülemek için ipconfig'i çalıştırın, belirli işlemler aşağıdaki gibidir:
Ardından SpringBoot ile oluşturulmuş Demo projesine ip aracılığıyla erişin.
Makinemin win1064-bit işletim sistemi olduğu unutulmamalıdır.
Tüm işlemler burada tamamlandı! Ardından basit bir özet yapmaya başlayın.
özet
Bir SpringBoot Dockerize etmek için belirli adımlar aşağıdaki gibidir:
SpringBoot projesi oluştur
Özel bir görüntü oluşturmak için bir Dockerfile dosyası tanımlayın
Kapsayıcıyı özel bir görüntü ile başlatın.
Kapsayıcıdaki uygulamaların günlüklerini görüntüleyin ve çalışan programlara erişin
Görüntüler, kapsayıcılar ve Dockerfiles için yaygın olarak kullanılan işlem komutları aşağıdaki gibidir:
Orijinal bağlantı:
https://blog.csdn.net/ljk126wy/article/details/104275624