Dockerfile ile Özel Docker Görüntülerini Otomatik Olarak Oluşturma ve Yapılandırma - Bölüm 3


Bu eğitimde, Apache hizmetinin yüklü olduğu Ubuntu'yu temel alan özel bir Docker görüntüsünün nasıl oluşturulacağı üzerinde durulacaktır. Tüm süreç bir Dockerfile kullanılarak otomatikleştirilecektir.

Docker görüntüleri, Dockerfiles adlı metin dosyalarından otomatik olarak oluşturulabilir. Bir Docker dosyası, bir Docker görüntüsü oluşturmak ve yapılandırmak için kullanılan adım adım sıralı talimatları veya komutları içerir.

Gereksinimler

  • Docker'ı Kurun ve Docker Konteyner Manipülasyonunu Öğrenin – Bölüm 1
  • Docker Konteynerleri Altında Uygulamaları Dağıtın ve Çalıştırın – Bölüm 2

Temel olarak bir Docker dosyası, gereksinimlerinize göre belirli bir kapsayıcıyı oluşturmak ve yapılandırmak için çeşitli talimatlar içerir. Aşağıdaki talimatlar en çok kullanılanlardır ve bazıları zorunludur:

  1. FROM=Docker dosyasındaki ilk talimat olarak zorunludur. Docker'a, yeni görüntüyü oluşturduğunuz temel görüntüyü çekmesi talimatını verir. Oluşturduğunuz görüntüyü tam olarak belirtmek için bir etiket kullanın:
Ex: FROM ubuntu:20.04
  1. MAINTAINER=Derleme görüntüsünün yazarı
  2. RUN=Bu talimat birden fazla satırda kullanılabilir ve Docker görüntüsü oluşturulduktan sonra her türlü komutu çalıştırır.
  3. CMD=Docker görüntüsü başlatıldığında herhangi bir komutu çalıştırın. Docker dosyasında yalnızca bir CMD talimatı kullanın.
  4. ENTRYPOINT=CMD ile aynıdır ancak görüntünün ana komutu olarak kullanılır.
  5. EXPOSE=Konteynerin çalışırken ağ bağlantı noktalarını dinlemesi talimatını verir. Konteyner bağlantı noktalarına varsayılan olarak ana bilgisayardan erişilemez.
  6. ENV=Kapsayıcı ortam değişkenlerini ayarlayın.
  7. ADD=Kaynakları kopyalayın (dosyalar, dizinler veya URL'lerden dosyalar).

Adım 1: Dockerfile Deposu Oluşturma veya Yazma

1. Öncelikle, gelecekte başka görüntüler oluşturmak amacıyla dosyaları yeniden kullanmak için bir tür Dockerfile depoları oluşturalım. Yeni Docker görüntüsünü oluşturmak için kullanılacak talimatları içeren dosyayı oluşturacağımız /var bölümünün herhangi bir yerinde boş bir dizin oluşturun.

mkdir -p /var/docker/ubuntu/apache
touch /var/docker/ubuntu/apache/Dockerfile

2. Ardından, aşağıdaki talimatları uygulayarak dosyayı düzenlemeye başlayın:

vi /var/docker/ubuntu/apache/Dockerfile

Dokerfile alıntısı:

FROM ubuntu
MAINTAINER  your_name  <[email >
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

Şimdi dosya talimatlarını inceleyelim:

İlk satır bize bir Ubuntu görüntüsünden oluşturduğumuzu söylüyor. Hiçbir etiket gönderilmezse (örneğin, 14:10) Docker Hub'daki en son görüntü kullanılır.

İkinci satıra, görseli oluşturan kişinin adını ve e-posta adresini ekledik. Sonraki iki RUN satırı, görüntü oluşturulurken kapsayıcıda yürütülecek ve Apache arka plan programını yükleyecek ve bazı metni varsayılan Apache web sayfasına echo edecektir. .

EXPOSE satırı, Docker kapsayıcısına 80 bağlantı noktasını dinlemesi talimatını verecektir, ancak bağlantı noktası dışarıdan kullanılamayacaktır. Son satır, konteynere, konteyner başlatıldıktan sonra Apache hizmetini ön planda çalıştırma talimatını verir.

3. Yapmamız gereken son şey, yerel olarak ubuntu-apache tabanlı yeni bir Docker görüntüsü oluşturacak olan aşağıdaki komutu vererek görüntüyü oluşturmaya başlamaktır. Bu örnekte gösterildiği gibi daha önce oluşturulan Dockerfile:

docker build -t ubuntu-apache /var/docker/ubuntu/apache/

4. Görüntü Docker tarafından oluşturulduktan sonra, aşağıdaki komutu vererek mevcut tüm görüntüleri listeleyebilir ve görüntünüzü tanımlayabilirsiniz:

docker images

Adım 2: Container'ı çalıştırın ve Apache'ye LAN'dan erişin

5. Konteyneri sürekli olarak (arka planda) çalıştırmak ve LAN'ınızdaki ana bilgisayardan veya diğer uzak makineden konteynerin açıktaki hizmetlerine (bağlantı noktalarına) erişmek için, ana terminal isteminde aşağıdaki komutu çalıştırın. :

docker run -d -p 81:80 ubuntu-apache

Burada, -d seçeneği ubuntu-Apache kapsayıcısını arka planda (arka plan programı olarak) çalıştırır ve -p seçeneği kapsayıcı bağlantı noktasını < eşleştirir. Strong>80'i localhost bağlantı noktanıza 81 bağlayın. Apache hizmetine dışarıdan LAN erişimine yalnızca 81 bağlantı noktası üzerinden ulaşılabilir.

Netstat komutu, ana bilgisayarın hangi portları dinlediği hakkında size bir fikir verecektir.

Konteyner başlatıldıktan sonra, çalışan konteynerin durumunu görüntülemek için docker ps komutunu da çalıştırabilirsiniz.

6. Web sayfası, makinenizin IP Adresine, localhost'a veya bağlantı noktası 81'deki docker net arayüzüne karşı curl yardımcı programını kullanarak komut satırından ana makinenizde görüntülenebilir. IP komutunu kullan ağ arayüzü IP adreslerini gösteren satır.

ip addr               [List nework interfaces]
curl ip-address:81    [System Docker IP Address]
curl localhost:81     [Localhost]

7. Ağınızdan kapsayıcı web sayfasını ziyaret etmek için uzak bir konumda bir tarayıcı açın ve HTTP protokolünü, kapsayıcının çalıştığı makinenin IP Adresini ve ardından aşağıdaki şekilde gösterildiği gibi bağlantı noktası 81'i kullanın. aşağıdaki resim.

http://ip-address:81

8. Kapsayıcının içinde hangi işlemlerin çalıştığını öğrenmek için aşağıdaki komutu verin:

docker ps
docker top <name or ID of the container>

9. Kapsayıcıyı durdurmak için docker stop komutunu ve ardından kapsayıcı kimliğini veya adını sorun.

docker stop <name or ID of the container>
docker ps

10. Kapsayıcıya açıklayıcı bir ad atamak istiyorsanız aşağıdaki örnekte gösterildiği gibi --name seçeneğini kullanın:

docker run --name my-www -d -p 81:80 ubuntu-apache
docker ps

Artık yalnızca atanan adı kullanarak kapsayıcıya manipülasyon (başlatma, durdurma, üst, istatistikler vb.) için başvuruda bulunabilirsiniz.

docker stats my-www

Adım 3: Docker Container için Sistem Genelinde Yapılandırma Dosyası Oluşturun

11. CentOS/RHEL'de bir systemd yapılandırma dosyası oluşturabilir ve kapsayıcıyı normalde diğer yerel hizmetlerde yaptığınız gibi yönetebilirsiniz.

Örneğin aşağıdaki komutu kullanarak apache-docker.service adında yeni bir systemd dosyası oluşturun:

vi /etc/systemd/system/apache-docker.service

apache-docker.service dosya alıntısı:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www

[Install]
WantedBy=local.target

12. Dosyayı düzenlemeyi bitirdikten sonra kapatın, değişiklikleri yansıtacak şekilde systemd arka plan programını yeniden yükleyin ve aşağıdaki komutları vererek kapsayıcıyı başlatın:

systemctl daemon-reload
systemctl start apache-docker.service
systemctl status apache-docker.service

Bu, basit bir Dockerfile ile neler yapabileceğinizin sadece basit bir örneğiydi, ancak minimum kaynak ve çabayla yalnızca birkaç saniye içinde başlatabileceğiniz oldukça karmaşık bazı uygulamaları önceden derleyebilirsiniz.

Ek Okuma: