Docker kapsayıcıları küçük yazılım kutuları olduğundan, bunları bilgisayardan bilgisayara kolayca kopyalayıp taşıyabilirsiniz. Yerel bilgisayarınızda bir Docker örneği üzerinde çalışmış ve onu daha güçlü bir sunucuya taşımaya karar vermiş olabilirsiniz. Veya belki de özel kapsayıcınızı birden fazla bilgisayara dağıtmak, “kopyalayıp yapıştırmak” istiyorsunuz. Bazen bir bulut bilişim sağlayıcısından memnun kalmayabilir ve farklı bir sağlayıcıya geçmek isteyebilirsiniz. Burada size mevcut Docker kapsayıcı görüntünüzü ve veri birimlerinizi bir Linux ana bilgisayarından diğerine nasıl taşıyacağınızı gösteriyoruz.
Kapsayıcı Görüntüsünü Kaynak Sunucudan Kaydet
Sisteminizde çalışan mevcut Docker kapsayıcılarını listeleyerek başlayın. Benim durumumda Nginx Docker konteynerimi yeni bir makineye aktarmak istiyorum:
docker ps

Üzerine kopyalamak istediğiniz kapsayıcıyı bulun ve örneği durdurun:
docker stop NAME_OF_INSTANCE

Docker kapsayıcısı genel bir başlangıç görüntüsünden oluşturulur. Zamanla bu temel görüntüye kendi değişikliklerinizi eklersiniz. Kapsayıcının içinde çalışan işlemler de kendi verilerini kaydedebilir veya başka değişiklikler yapabilir. Tüm bunları korumak için kapsayıcınızın mevcut durumunu yeni bir görüntüye aktarın:
docker commit NAME_OF_INSTANCE mycontainerimage

Örnek şu anda çalışıyorsa, bu eylemin içeriği kaydedilirken onu duraklatacağını unutmayın. Bu bir sorunsa, bunun yerine docker commit -p=false NAME_OF_INSTANCE mycontainerimage komutunu girerek bu duraklamayı önleyebilirsiniz. Ancak kesinlikle gerekli olmadıkça bunu yapmayın. Bu durumda tutarsız/eksik veri içeren bir görüntü oluşturma olasılığı artar.
Şimdi yeni işlenen Docker kapsayıcı görüntünüzü bir arşiv dosyasına kaydedin:
docker save -o mycontainerimage.tar mycontainerimage
Tercih ettiğiniz dosya aktarım yöntemini kullanın ve .tar dosyanızı Docker kapsayıcınızı taşımak istediğiniz ana bilgisayara kopyalayın. Örneğin, aşağıdaki komut Nginx Docker resmimi scp kullanarak aktarıyor:
scp ./mycontainerimage.tar [email protected]:/home/ramces/
Konteynerinizden Docker Birimini Dışa Aktarma
Docker görüntüsünü kaydetmenin dezavantajlarından biri, konteynerinizin yanında kurduğunuz Docker aksesuarlarıyla birlikte gelmemesidir. Bu, tüm ağ bağlama bağlantılarını ve kalıcı verilerinizi depolamak için oluşturduğunuz birimleri içerir.
Veri biriminizi düzgün bir şekilde dışa aktarmak için önce Git’i yerel makinenize yükleyin:
sudo apt install git
Docker için birim dışa aktarma betiğini indirmek için aşağıdaki komutu çalıştırın:
git clone https://github.com/ricardobranco777/docker-volumes.sh.git
Dışa aktarma komut dosyasının doğru izin bitlerine sahip olduğundan emin olun ve ardından bunu makinenizin “/usr/local/bin:” dizinine kopyalayın.
sudo chmod +x ./docker-volumes.sh/docker-volumes.sh sudo cp ./docker-volumes.sh/docker-volumes.sh /usr/local/bin/
Komut dosyanızın düzgün çalışıp çalışmadığını test edin, ardından kapsayıcınızla ilgili tüm birimleri çıkarın:
docker-volumes.sh -h docker-volumes.sh NAME_OF_INSTANCE save mycontainerimage-volume.tar

Yeni arşivlenen Docker birim dosyalarınızı uzaktaki makinenize gönderin:
scp ./mycontainerimage-volume.tar [email protected]:/home/ramces/
Kapsayıcı Görüntüsünü Hedef Sunucuya Yükleme
Uzak ana makinenizde oturum açın, ardından uzak makinenizin Docker arka plan programına yüklemek için aşağıdaki komutu çalıştırın:
docker load -i ./mycontainerimage.tar
Docker kapsayıcı görüntünüzü kaynak makinenizdeki orijinal çalıştırma bayraklarıyla yeniden başlatmak için docker create komutunu kullanın. Örneğin, Nginx Docker konteynerimde başlangıçta ana makinemin 8080 numaralı bağlantı noktasıyla eşlenen 80 numaralı bağlantı noktası vardı:
docker create --name my-nginx-container -p 8080:80 mycontainerimage
Yeni içe aktarılan Docker kapsayıcınızı çalıştırın:
docker start my-nginx-container
Sistemdeki tüm etkin kapsayıcıları listeleyerek içe aktarılan görüntünüzün düzgün çalıştığını doğrulayın:
docker ps

Docker Birimini Konteynerinize Aktarma
Bir .tar Docker birim dosyasını içe aktarmak için önce Git’i yeni ana makinenize indirin:
sudo apt install git
Orijinal sisteminizde olduğu gibi, docker-volume.sh yardımcı komut dosyasını indirin, izin bitlerini “yürüt” olarak ayarlayın ve ardından onu yeni makinenizin “/usr/local/bin” dizinine kopyalayın.

Dışa aktarılan görüntü dosyanızı kullanarak yeni bir Docker kapsayıcısı oluşturun:
docker create --name my-nginx-container -v myvol:/usr/share/nginx/html -p 8080:80 mycontainerimage
Yeni sisteminizin Docker arka plan programına yüklemek için docker-volume.sh betiğini orijinal .tar dosyanızla çalıştırın:
docker-volumes.sh my-nginx-container load mycontainerimage-volume.tar
Aşağıdaki komutu çalıştırarak yeni Docker kapsayıcınızı başlatın:
docker start my-nginx-container
Kapsayıcınızın dahili yapılandırma verilerine bakarak biriminizi düzgün şekilde yükleyip yüklemediğini test edin:
docker inspect -f '{{ .Mounts }}' my-nginx-container

Dosya Oluşturmadan Görüntüyü Aktarın
Bazen mycontainerimage.tar.gz dosyası oluşturmayı atlamak isteyebilirsiniz. Kapta çok fazla veri bulunduğundan yeterli disk alanınız olmayabilir. Görüntüyü tek komutla hedef ana bilgisayara kaydedebilir, aktarabilir ve yükleyebilirsiniz. Yukarıda tartışılan docker commit komutunu çalıştırdıktan sonra şunu kullanabilirsiniz:
docker save mycontainerimage | ssh [email protected] docker load
Artık yerleşik bir SSH istemcisine sahip olduğundan (PuTTY artık gerekli değil) Windows’tan da çalışmalıdır.
Durumunuza uygun docker create komutuyla devam edin.

Not: İçe aktarılan görüntüyü başlatmadan önce, daha önce kapsayıcınıza eklenmiş olan herhangi bir Docker birimini düzgün şekilde bağladığınızdan emin olun.
Son olarak, yeni içe aktarılan Docker kapsayıcınızı, docker start komutunu ve ardından kapsayıcınızın adını çalıştırarak başlatın.

Docker Dağıtımının Tamamını Taşımak için Docker Compose’u Kullanma
Compose eklentisi ile Docker, sunucunun temel yazılım yığını hakkında endişelenmeden karmaşık programlar oluşturmayı, yapılandırmayı ve çalıştırmayı mümkün kılar. Bu da farklı Linux sistemlerinde tekrarlanabilir uygulama dağıtımları oluşturmanıza olanak tanır.
Mevcut Docker kurulumunuzu Docker Compose’a taşımaya başlamak için öncelikle eklentisinin şu anda sisteminizde olduğundan emin olun:
sudo apt install docker-compose-plugin docker-buildx-plugin
Docker Compose kurulumunuz için ana dizininizde yeni bir klasör oluşturun:
mkdir ~/my-docker-compose && cd ~/my-docker-compose
Uygulamanız için bir “docker-compose.yml” dosyası oluşturmak üzere favori metin düzenleyicinizi kullanın:
nano ./docker-compose.yml
Aşağıdaki kod bloğunu Compose dosyanızın içine yapıştırın ve ardından onu özel ihtiyaçlarınıza göre ayarlayın:
version: '3' volumes: myvol: # Replace with the name of your imported volume. services: nginx: image: mycontainerimage # Replace with the name of your imported Docker image. ports: - "8080:80" volumes: - myvol:/usr/share/nginx/html # Replace "myvol" with the name of your mounted image.
Yeni Compose dosyanızı kaydedin ve başlatmak için aşağıdaki komutu çalıştırın:
docker compose up -d
Son olarak Compose dağıtımınızın düzgün çalışıp çalışmadığını test edin. Benim durumumda Nginx Docker kapsayıcımı bir web tarayıcısı açıp “localhost:8080” konumuna giderek test edeceğim.

Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.