Geliştiriciler için Docker

Docker ile uygulama paketleme, Dockerfile kullanımı ve bind mount ile geliştirme

Kubedo Academy’e hoş geldiniz! Bu laboratuvarda Docker’ın yazılım geliştiriciler için nasıl kullanılacağını öğreneceksiniz.


Zorluk seviyesi: Başlangıç
Süre: Yaklaşık 30 dakika

İçindekiler


1. Lab için Gerekli Hazırlık

GitHub Deposunu Klonlama

Terminal
$ git clone https://github.com/dockersamples/linux_tweet_app

DockerID Oluşturma

Bir DockerID’niz yoksa Docker Hub üzerinden ücretsiz kayıt olun.


2. Basit Docker Container’ları Çalıştırmak

Container’ları üç farklı amaç için kullanabilirsiniz:

KullanımAçıklama
Tek görevShell script veya uygulama çalıştırma
İnteraktifContainer’a bağlanıp komut çalıştırma
Arka planWeb sunucuları, veritabanları

Alpine Container’da Tek Görev

Terminal
$ docker container run alpine hostname

İnteraktif Ubuntu Container

Terminal
$ docker container run --interactive --tty --rm alpine /bin/ash

Parametreler:

  • --interactive: İnteraktif oturum
  • --tty: Pseudo-TTY oluşturur
  • --rm: İşlem bitince container’ı siler

Arka Planda MySQL Container

Terminal
$ docker container run \
--detach \
--name mydb \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
mysql:latest

Container loglarını görüntüleme:

Terminal
$ docker container logs mydb

Container içinde komut çalıştırma:

Terminal
$ docker exec -it mydb sh

3. Bir Uygulamayı Docker ile Paketlemek ve Çalıştırmak

Dockerfile İnceleme

Terminal
$ cd ~/linux_tweet_app
cat Dockerfile
FROM nginx:latest
COPY index.html /usr/share/nginx/html
COPY linux.png /usr/share/nginx/html
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]

Dockerfile Komutları

KomutAçıklama
FROMTemel imaj
COPYDosyaları container’a kopyalar
EXPOSEAçılacak portları belirtir
CMDBaşlangıç komutu

İmaj Oluşturma

DockerID’nizi ortam değişkeni olarak kaydedin:

export DOCKERID=<your_docker_id>

İmajı oluşturun:

Terminal
$ docker image build --tag $DOCKERID/linux_tweet_app:1.0 .

Container Çalıştırma

Terminal
$ docker container run \
--detach \
--publish 80:80 \
--name linux_tweet_app \
$DOCKERID/linux_tweet_app:1.0

[!NOTE] --publish 80:80 parametresi host’un 80 portunu container’ın 80 portuna yönlendirir.


4. Çalışan Bir Web Sitesini Değiştirmek

Bind Mount Kullanımı

Bind mount ile yerel dosya sistemini container içine bağlayabilirsiniz:

Terminal
$ docker container run \
--detach \
--publish 80:80 \
--name linux_tweet_app \
--mount type=bind,source="$(pwd)",target=/usr/share/nginx/html \
$DOCKERID/linux_tweet_app:1.0

Dosyaları değiştirin ve değişiklikleri anında görün:

Terminal
$ cp index-new.html index.html

[!TIP] Bind mount geliştirme ortamı için idealdir. Üretim ortamında imaj içine kodları gömmelisiniz.

Yeni Sürüm Oluşturma

Terminal
$ docker image build --tag $DOCKERID/linux_tweet_app:2.0 .

Docker Hub’a Yükleme

docker login
docker image push $DOCKERID/linux_tweet_app:1.0
docker image push $DOCKERID/linux_tweet_app:2.0

Konu Tekrarı - Kısa Sınav


Sonraki Adım

Docker Ağ Yapıları →