Linux

Ubuntu 20.04’te Docker Compose Nasıl Kurulur ve Kullanılır

Adım 1 — Docker Compose’u Yükleme

Docker Compose’un en güncel kararlı sürümünü edindiğinizden emin olmak için bu yazılımı resmi Github deposundan indireceksiniz .

İlk olarak, sürümler sayfasında bulunan en son sürümü onaylayın . Bu yazının yazıldığı sırada en güncel kararlı sürüm 1.29.2.

Aşağıdaki komut, sürümü indirecek 1.29.2 ve yürütülebilir dosyayı konumuna kaydedecek ve /usr/local/bin/docker-compose bu yazılımın küresel olarak şu şekilde erişilebilir olmasını sağlayacaktır docker-compose:

docker-compose Ardından, komutun yürütülebilir olması için doğru izinleri ayarlayın :

sudo chmod +x /usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Yüklemenin başarılı olduğunu doğrulamak için şunları çalıştırabilirsiniz:

docker-compose --version

Şuna benzer bir çıktı göreceksiniz:

Outputdocker-compose version 1.29.2, build 5becea4c

Docker Compose artık sisteminize başarıyla yüklendi. docker-compose.ymlSonraki bölümde, bir dosyanın nasıl kurulacağını ve bu araçla kapsayıcılı bir ortamın nasıl kurulup çalıştırılacağını göreceksiniz .

docker-compose.ymlAdım 2 — Dosya Ayarlama

Bir dosyanın nasıl kurulacağını ve Docker Compose ile nasıl çalışılacağını göstermek için , genel Docker kayıt defteri olan Docker Hub’ın resmi Nginx görüntüsünü docker-compose.yml kullanarak bir web sunucusu ortamı oluşturacaksınız . Bu kapsayıcılı ortam, tek bir statik HTML dosyası sunacaktır.

Ana klasörünüzde yeni bir dizin oluşturarak başlayın ve ardından bu dizin içine gidin:

mkdir ~/compose-demo
cd ~/compose-demo

Bu dizinde, Nginx ortamınız için belge kökü görevi görecek bir uygulama klasörü ayarlayın:

mkdir app

Tercih ettiğiniz metin düzenleyiciyi kullanarak klasör içinde yeni bir index.html dosya oluşturun app:

nano app/index.html

Aşağıdaki içeriği bu dosyaya yerleştirin: ~/compose-demo/app/index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>

İşiniz bittiğinde dosyayı kaydedin ve kapatın. kullanıyorsanız , bunu , ardından ve onaylamak için nano yazarak yapabilirsiniz. CTRL+X Y ENTER

Ardından, docker-compose.yml dosyayı oluşturun:

nano docker-compose.yml

Aşağıdaki içeriği docker-compose.yml dosyanıza ekleyin: docker-compose.yml

version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

Dosya docker-compose.yml genellikle version tanımla başlar. Bu, Docker Compose’a hangi yapılandırma sürümünü kullandığınızı söyleyecektir.

Ardından services, bu ortamın parçası olan hizmetleri kurduğunuz bloğa sahip olursunuz. Sizin durumunuzda, adında tek bir hizmetiniz var web. Bu hizmet nginx:alpine görüntüyü kullanır ve yönergeyle bir bağlantı noktası yeniden yönlendirmesi kurar portsHost 8000 makinenin (Docker Compose’u çalıştırdığınız sistem) bağlantı noktasındaki tüm istekler, Nginx’in çalışacağı bağlantı noktasındaki kapsayıcıya yönlendirilecektir .web80

Yönerge , ana makine ile kapsayıcı arasında paylaşılan volumes bir birim oluşturacaktır . Bu, yerel klasörü kapsayıcıyla paylaşacak ve birim, daha sonra Nginx için varsayılan belge kökünün üzerine yazılacak olan kapsayıcının içinde yer alacaktır. app/usr/share/nginx/html

Dosyayı kaydedin ve kapatın.

docker-compose.yml Ona hizmet edecek kapsayıcılı bir web sunucusu ortamı oluşturmak için bir demo sayfası ve bir dosya kurdunuz . Bir sonraki adımda, bu ortamı Docker Compose ile ortaya çıkaracaksınız.

Adım 3 — Docker Compose’u Çalıştırmak

Dosya yerindeyken , docker-compose.yml ortamınızı yükseltmek için artık Docker Compose’u çalıştırabilirsiniz. Aşağıdaki komut, gerekli Docker görüntülerini indirecek, webhizmet için bir kapsayıcı oluşturacak ve kapsayıcı ortamı arka plan modunda çalıştıracaktır:

docker-compose up -d

Docker Compose önce yerel sisteminizde tanımlı görüntüyü arar ve görüntüyü bulamazsa görüntüyü Docker Hub’dan indirir. Çıktıyı şöyle göreceksiniz:

OutputCreating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

Ortamınız artık arka planda çalışıyor ve çalışıyor. Kapsayıcının etkin olduğunu doğrulamak için şunları çalıştırabilirsiniz:

docker-compose ps

Bu komut, çalışan kapsayıcılar ve durumları ile şu anda yürürlükte olan tüm bağlantı noktası yeniden yönlendirmeleri hakkında size bilgi gösterecektir:

Output       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
compose-demo_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

localhost:8000 Artık bu demoyu yerel makinenizde your_server_domain_or_IP:8000 çalıştırıyorsanız veya bu demoyu uzak bir sunucuda çalıştırıyorsanız , tarayıcınızı işaret ederek demo uygulamasına erişebilirsiniz .

Bunun gibi bir sayfa göreceksiniz:

Dosya içinde ayarladığınız paylaşılan birim , klasör dosyalarınızı kapsayıcının belge köküyle senkronize halde docker-compose.yml tutar . app Dosyada herhangi bir değişiklik yaparsanız index.html, bunlar kapsayıcı tarafından otomatik olarak alınır ve böylece sayfayı yeniden yüklediğinizde tarayıcınıza yansıtılır.

Sonraki adımda, kapsayıcılı ortamınızı Docker Compose komutlarıyla nasıl yöneteceğinizi göreceksiniz.

Adım 4 — Docker Oluşturma Komutlarını Tanımak

Bir docker-compose.yml dosyanın nasıl kurulacağını ve ortamınızı docker-compose up. Artık kapsayıcı ortamınızı yönetmek ve bunlarla etkileşim kurmak için Docker Compose komutlarını nasıl kullanacağınızı göreceksiniz.

Nginx kapsayıcınız tarafından üretilen günlükleri kontrol etmek için şu logskomutu kullanabilirsiniz:

docker-compose logs

Şuna benzer bir çıktı göreceksiniz:

OutputAttaching to compose-demo_web_1
web_1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1  | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1  | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1  | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1  | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

Kapsayıcılarınızın mevcut durumunu değiştirmeden ortam yürütmesini duraklatmak istiyorsanız, şunları kullanabilirsiniz:

docker-compose pause
OutputPausing compose-demo_web_1 ... done

Bir duraklama verdikten sonra yürütmeye devam etmek için:

docker-compose unpause
OutputUnpausing compose-demo_web_1 ... done

Komut , stop kapsayıcı yürütmesini sonlandıracak, ancak kapsayıcılarınızla ilişkili hiçbir veriyi yok etmeyecek:

docker-compose stop
OutputStopping compose-demo_web_1 ... done

Bu kapsayıcılı ortamla ilişkili kapsayıcıları, ağları ve birimleri kaldırmak istiyorsanız şu down komutu kullanın:

docker-compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default

Bunun, ortamınızı döndürmek için Docker Compose tarafından kullanılan temel görüntüyü kaldırmayacağına dikkat edin (sizin durumunuzda, nginx:alpine). Bu şekilde, ortamınızı bir ile tekrar docker-compose upaçtığınızda, görüntü zaten sisteminizde olduğundan işlem çok daha hızlı olacaktır.

Temel görüntüyü de sisteminizden kaldırmak isterseniz, şunları kullanabilirsiniz:

docker image rm nginx:alpine
OutputUntagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi Şebinkarahisarda tamamladım. Liseyi Şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak 8 ay çalıştım. Daha sonra özel bir şirkette Sistem Network Sorumlusu olarak 4 ay çalıştıktan sonra proje sonlandırılmasından dolayı işten ayrıldım. Tekrar dan 5.5 yıl çalışmış olduğum firmaya Sistem ve Network Yöneticisi olarak geri döndüm ve çalışmaya başladım. Kendimi geliştirmek için Bilge Adam Akademi den Sistem Uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Başa dön tuşu