Docker'da port yönlendirme, konteyner portunu Docker host sistemi üzerinde açığa çıkarmamızı sağlayan bir işlemdir. Uygulamayı yalıtılmış bir ortamda çalıştırmamıza ve aynı zamanda bir kullanıcı makinesindeki konteynerin dışından erişilebilir hale getirmemize olanak tanır.
Bu gönderi şunları gösterecektir:
- Docker'da Bağlantı Noktasını “-p” veya “–publish” Etiketi Kullanarak İletme
- Docker Compose Kullanarak Docker'da Bağlantı Noktası Nasıl İletilir
- Bağlantı Noktasını Belirli Bir Ağa Yönlendirme
- Çözüm
Docker'da Bağlantı Noktasını “-p” veya “–publish” Etiketi Kullanarak İletme
Docker'da bir bağlantı noktasını iletmek için kullanıcının konteyner bağlantı noktasını Docker ana bilgisayarında yayınlaması gerekir. Bu amaçla, konteyneri docker ana bilgisayarında “” komutunu kullanarak çalıştırın. -P ' veya ' -Yayınla “ etiketinin içinde liman işçisi koşusu ' emretmek.
Doğru gösterim için aşağıdaki talimatları izleyin.
Adım 1: Dockerfile'ı oluşturun
Öncelikle bir dosya oluşturun ve adını “” olarak ayarlayın. Docker dosyası ”. Bu dosya, Docker konteynerinin şablonunu oluşturmaya yönelik metinsel talimatları içerir. Örneğin, basit Golang programını Dockerfile'da aşağıdaki snippet'i kullanarak dockerize edelim:
golang'dan: 1.8
İŞ YÖNÜ / Gitmek / kaynak / uygulama
main2.go'yu KOPYALAYIN.
KOŞ git inşa et -Ö Web sunucusu .
ORTAYA ÇIKARMAK 8080
CMD [ './Web sunucusu' ]
Verilen pasajda:
- “ İTİBAREN Temel görüntüyü ayarlamak için ” komutu kullanılır.
- “ İŞ YÖNÜ ” konteynerin çalışma dizinini tanımlar.
- “ KOPYALA ” komutu, program dosyasının bir kopyasını kapsayıcı tarafından belirtilen yolda oluşturacaktır.
- “ KOŞMAK ” komutu kapta belirtilen komutu çalıştıracaktır.
- “ ORTAYA ÇIKARMAK ” komutu konteynerin dinleneceği portu belirtir.
- “ CMD ” konteynerin çalıştırılabilir noktalarını belirtir.
Adım 2: Bir Golang Programı Oluşturun
Daha sonra “adlı başka bir dosya oluşturun. main2.go ”ve aşağıda verilen ve basit bir dize yazdıran Golang programını” bağlantı noktasına yapıştırın. 8080 ”:
ana paket
içe aktarmak (
'fmt'
'kayıt'
'net/http'
)
işlev işleyicisi ( İçinde http.ResponseWriter, r * http.İstek ) {
HTML := '
DOCTYPE HTML'si >
< HTML >
< KAFA >
< başlık > Merhaba Golang ! başlık >
< stil >
vücut {
arka plan rengi: #D2B48C;
}
.konteyner {
metin hizalama: ortala;
dolgu: 50 piksel;
}
stil >
KAFA >
< vücut >
< div sınıf = 'konteyner' >
< h1 > Merhaba ! LinuxHint Eğitimine Hoş Geldiniz h1 >
div >
vücut >
HTML >`
w.Başlık ( ) .Ayarlamak ( 'İçerik türü' , 'metin/html' )
fmt.Fprint ( İçinde html )
}
ana işlev ( ) {
http.HandleFunc ( '/' , işleyici )
günlük.Ölümcül ( http.ListenAndServe ( '0.0.0.0:8080' , sıfır ) )
}
3. Adım: Container'ın Anlık Görüntüsünü Oluşturun
Şimdi yukarıda belirtilen Docker dosyasından konteyner için bir anlık görüntü oluşturun. Bunun için öncelikle “” komutunu kullanarak Dockerfile’ın oluşturulduğu dizine gidin. cd <çalışma-direngi-yolu> ' emretmek:
Daha sonra verilen komutu kullanarak yeni kapsayıcı görüntüsünü oluşturun:
Liman işçisi yapısı -T golang-img.
Verilen sonuç, görüntünün sağlanan yapı bağlamına göre oluşturulduğunu gösterir.
Adım 4: Ana Bilgisayar Bağlantı Noktasını Konteyner Limanına İletin
Şimdi, yerel bir makinede konteynerin dışındaki dockerize uygulamasına erişmek için konteyneri çalıştırın ve ana bilgisayar portunu konteyner portuna iletin. Bu amaçla çalıştırın “docker run –name
Burada, “ -P ” bayrağı, konteyner çalıştırma bağlantı noktasını liman işçisi ana bilgisayarında yayınlamak için kullanılır:
Adım 5: Doğrulama
Doğrulama için, çalışan kapsayıcıları şunu kullanarak görüntüleyin: ' Liman işçisi PS ”:
liman işçisi notAşağıdaki sonuçta konteynerli uygulama mevcut ağ arayüzlerini dinliyor “ 0.0.0.0 'yayınlanan bağlantı noktasında' 8080 ”. Bu, bağlantı noktasının ana makinede çalışan uygulamaya iletildiği anlamına gelir:
Şimdi tarayıcıyı başlatın ve şuraya gidin: ' http://localhost:8080/ ” ve port yönlendirme tekniğinin uygulanıp uygulanmadığını ve konteynerli uygulamaya ana sistemdeki konteyner dışından erişilip erişilemediğini doğrulayın:
Burada host portunu başarılı bir şekilde konteyner portuna ilettik ve uygulamaya docker host üzerinden erişilebiliyor.
Docker Compose Kullanarak Docker'da Bağlantı Noktası Nasıl İletilir
Konteynerli uygulamaya konteynerin dışından erişmek amacıyla konteyner portunu ana bilgisayara iletmek için kullanıcı “ liman Yaml dosyasını oluşturmada ” tuşuna basın. Docker compose, farklı hizmetleri ve uygulamaları farklı konteynerlerde çalıştırmamızı sağlayan bir Docker hizmetidir. Kullanmak ' docker-compose.yml ” dosyasıyla kullanıcı ayrıca konteyner portunu ana makineye iletebilir ve dış dünyayla uygulama bağlantısı kurabilir.
Çizimler için aşağıdaki prosedüre göz atın.
1. Adım: Dosya Oluşturun
Öncelikle “adlı bir dosya oluşturun. docker-compose.yml ” dosyasını açın ve aşağıdaki içeriği dosyaya ekleyin:
sürüm: '3'Hizmetler:
ağ:
inşa etmek: .
bağlantı noktaları:
- 8080 : 8080
Yukarıdaki parçada, ' limanlar ” tuşu ana bilgisayarı konteyner portuna bağlamak için kullanılır. Burada ilk değer host portu, ikinci değer ise konteyner portudur.
2. Adım: Uygulamayı Başlatın
Oluşturma dosyasındaki talimatları belirledikten sonra uygulamayı “ liman işçisi oluşturma ' emretmek:
liman işçisi oluşturma
3. Adım: Doğrulama
Doğrulama için, '' seçeneğini kullanarak oluşturma kapsayıcılarını listeleyin. liman işçisi-oluşturma ps ' emretmek:
liman işçisi oluşturma not -A
Konteynerin ana makinede erişilebilir olup olmadığını kontrol etmek için “ http://localhost:8080/ ” URL'si. Burada konteyner portunu ana makineye etkili bir şekilde ilettiğimizi görebilirsiniz:
Bağlantı Noktasını Belirli Ağa Yönlendirme
Bir konteyner portunu belirli bir ağa iletmek için kullanıcının konteynere erişmek istediği ağı “” kullanarak belirtmesi gerekir. -ağ ' seçenek. Gösterim için verilen adımlara bakın.
1. Adım: Bir Ağ Oluşturun
“” seçeneğini kullanarak yeni bir ağ oluşturun. liman işçisi ağı
Docker ağlarını görüntülemek için “ Liman işçisi ağı ls ' emretmek:
liman işçisi ağı lsBurada başarıyla oluşturduk “ mygo-ağım ' bu ' kullanıyor köprü ” sürücü:
Adım 2: Harita Ağı
Bağlantı noktası yönlendirme tekniğini kullanarak belirli bir ağdaki kapsayıcıyı çalıştırmak ve erişmek için aşağıdaki komutu kullanın:
liman işçisi koşusu -P 8080 : 8080 --ağ mygo-ağım golang-imgVerilen komutta “ -P ” seçeneği, kapsayıcıyı belirtilen ağın belirtilen bir bağlantı noktasında yayınlar. Burada, “ -ağ Docker ağını tanımlamak için ” seçeneği kullanılır:
Doğrulama için tekrar “ http://localhost:8080 ” bağlantı noktasını açın ve konteynerin belirtilen ağda erişilebilir olup olmadığını kontrol edin:
Yukarıdaki çıktı, konteyner portunu belirli bir ağ üzerinde etkili bir şekilde ilettiğimizi gösterir.
Not: “Ana bilgisayar” ağını kullanırken, kullanıcının “konteynerden ana bilgisayara” bağlantı noktasını kullanarak yayınlamasına gerek yoktur. -P ' veya ' -Yayınla ' seçenek.
Docker Compose'u Kullanarak Bağlantı Noktasını Belirli Ağa İletme
Aşağıdaki pasajı '' içine ekleyin docker-compose.yml ' dosya. Aşağıdaki parçada, “ ağlar ” tuşu ağı belirtmek için kullanılır:
sürüm: '3'Hizmetler:
ağ:
inşa etmek: .
bağlantı noktaları:
- 8080 : 8080
Şimdi uygulamayı “” kullanarak bir kapta başlatın. liman işçisi oluşturma ' emretmek:
liman işçisi oluşturma
Docker'da port yönlendirme yöntemlerini ele aldık.
Çözüm
Dockerize uygulamasına konteynerin dışından erişmek amacıyla Docker'daki bağlantı noktasını iletmek için kullanıcı ' -P ' veya ' -Yayınla ' seçeneğindeki ' liman işçisi koşusu ” komutunu kullanabilir veya kullanıcı “ limanlar Docker oluşturma dosyasında ” tuşuna basın. Belirli bir ağdaki konteynere erişmek için kullanıcı, bir ağdaki konteyner portunu “ –ağ ' seçenek. Bu blog Docker'daki bağlantı noktalarını iletme tekniklerini gösterdi.