Bu nihai Docker komutu öğreticisini öğrenmek için yalnızca 8 adım

Yazar | Timothy Mugayi

Çevirmen | Crescent Moon Editörü | Xu Weilong

Mühür görüntüsü | Görsel Çin'de CSDN indirme

Docker konteynerleri, pastadaki kremadan dağıtım ortamları için bir zorunluluğa dönüştü. Bazen geliştiriciler olarak, üretkenliği artırmamıza yardımcı olmak için Docker araçlarını araştırmak veya hata ayıklamak için çok fazla zaman harcamamız gerekir. Ne zaman yeni bir teknoloji dalgası gelse, öğrenmek için çok zaman harcamalıyız.

Bir Docker kümesi kurmak veya Docker konteynerinin başlatılamamasına neden olan kodu bulmak 1-2 gün sürer. Benzer bir deneyim yaşadınız mı? Çoğu geliştirici için, yapılandırmayı araştırmak ve hataları bulmak için harcadığımız zaman, özellikle de kullandığınız ortam hala nispeten yeni veya olgunlaşmamışsa, yeni özellikleri gerçekten başlatmak için gereken zamanı aşıyor gibi görünüyor.

Bazılarımız sağlam bir CI / CD süreciyle istikrarlı bir ortam yaratma konusunda o kadar şanslı değiliz. Bu nedenle, günlük işlerde en sık kullanılan bu Docker komutu öğreticisini büyük Docker teknik dokümantasyon web sitelerinden topladım ve sıraladım.

İsteğe bağlı işaretlerin ve parametrelerin ayrıntılı bir listesi için lütfen Docker kılavuzuna bakın: https://docs.docker.com/engine/reference/commandline/cli/

İpucu: Her Docker komutunun yerleşik belgeleri vardır.Örneğin, yardım belgeleri almak için docker run --help yazın. Docker run --help yazmak aşağıdaki yardım belgelerini oluşturacaktır.

Umarım bu makale, hata ayıklama ve Docker'ı kullanmanın zorluklarından kurtulmanıza yardımcı olabilir. Her bir komutu okurken, lütfen komutun ilgili açıklamasına dikkat edin.

Docker derlemesi

$ docker build \

--build-arg ARTIFACTORY_USERNAME = timothy.mugayi \

--build-arg ARTIFACTORY_SECRET_TOKEN = AP284233QnYX9Ckrdr7pUEY1F \

--build-arg LICENSE_URL = 'https: //source.com/license.txt' \

- önbellek yok-t helloworld: en son.

İsteğe bağlı derleme parametreleriyle bir Docker görüntüsü oluşturabilirsiniz. Varsayılan olarak Docker, sonraki derlemeleri hızlandırmak için ilk Dockerfile derlemesini önbelleğe alır veya Dockerfile'daki run komutuna göre görüntüye yeni bir katman ekledikten sonra derler.

Önbelleğe almaya ihtiyacınız yoksa yukarıdaki örneğe önbelleğe alınmamış bir parametre ekleyebilirsiniz.

Not: Docker komutları ada veya Docker konteyner kimliğine göre yürütülebilir. Aşağıdaki komutta < KONTEYNER > Kapsayıcı kimliği veya kapsayıcı adı ile değiştirilebilir.

Docker kapsayıcısını çalıştırın

$ docker başlangıcı < KONTEYNER >

Mevcut bir kapsayıcı başlatın. Konteynırın indirildiğini ve oluşturulduğunu varsayıyoruz.

$ docker stop < KONTEYNER >

Çalışan Docker konteynerini durdurun.

$ docker stop $ (docker kapsayıcısı ls -aq)

Birden fazla çalışan Docker konteyneriniz varsa ve tüm konteynerleri durdurmak istiyorsanız, docker stop ve tüm konteyner kimliklerinin bir listesini girebilirsiniz.

$ docker exec -ti < KONTEYNER >

Belirli bir kapta bir kabuk komutu çalıştırın.

$ docker run -ti - görüntü < GÖRSEL > < KONTEYNER >

Docker çalıştırma ve başlatma arasında açık bir fark vardır. Temel olarak, Docker run iki şey yapar: (1) görüntünün yeni bir konteynerini oluşturun; (2) konteyneri çalıştırın. Başarısız olan veya çıkan bir kapsayıcıyı yeniden çalıştırmak istiyorsanız docker start komutunu kullanın.

$ docker run -ti - rm - görüntü < GÖRSEL > < KONTEYNER >

Bu aynı zamanda bir konteyner oluşturmak ve başlatmak için tasarlanmış ilginç bir komuttur. Ayrıca, konteynerin içinde komutu çalıştırmak ve ardından komut yürütüldükten sonra kabı silmek istiyor.

docker run -d < GÖRSEL > : < IMAGE_TAG > Kullanım: docker run -d helloworld: en son

Docker run komutunu ayrı bir durumda başlatmak istiyorsanız (örneğin, Linux için bir arka plan programı olarak), run komutunun sonuna -d ekleyebilirsiniz.

$ docker duraklat < KONTEYNER >

Belirli bir kapta çalışan tüm işlemleri duraklatın.

$ docker ps -a

Yukarıdaki komut, daha önce çalıştırılan tüm Docker görüntülerini listeleyecektir. Çalıştırmak istediğiniz görüntüyü bulduktan sonra aşağıdaki komutu uygulayabilirsiniz. Kapsayıcı kimliğini, orijinal docker ps -a komutuyla görüntülenen sonuçları yansıtacak şekilde değiştirdiğinizden emin olun.

sudo docker çalıştır {kapsayıcı kimliği} -e AWS_DEFAULT_REGION = us-east-1 \

e INPUT_QUEUE_URL = "https://sqs.us-east-1.amazonaws.com/my_input_sqs_queue.fifo" \

e REDIS_ENDPOINT = "redis.dfasdf.0001.cache.amazonaws.com:8000" \

e ENV = geliştir \

e DJANGO_SETTINGS_MODULE = motor.settings \

e REDIS_HOST = "cmgadsfv7avlq.us-east-1.redis.amazonaws.com" \

e REDIS_PORT = 5439 \

e REDIS_USER = merhaba \

e REDIS_PASSWORD = trasdf ** # 0ynpXkzg

Yukarıdaki komut, parametreler olarak geçirilen birden çok ortam değişkeniyle bir Docker görüntüsünün nasıl çalıştırılacağını gösterir ve \ bir satırsonu karakteri anlamına gelir.

Docker kapsayıcısında hata ayıklama

Şu anda çalışan konteynerin adını almak için docker ps'yi kullanabilirsiniz.

$ docker geçmişi < GÖRSEL >

örnek kullanım:

$ docker geçmişi my_image_name

Yukarıdaki komut, belirli bir aynanın geçmişini görüntüleyebilir. Docker görüntüleri hakkında daha fazla bilgi edinmek istediğinizde bu bilgiler çok kullanışlıdır. Bunu derinlemesine tartışalım, çünkü bu komutun işlevini anlamanız çok gerekli ve bu komut hakkında çok az belge var.

Docker hakkında konuştuğumuzda, yansıtma, Docker aynalamasının temeli olan birden çok katman üzerine kurulur. Her bir kap, okunabilir / yazılabilir bir katmanın bir görüntüsünü içerir (bunu kalıcı bir durum veya dosya olarak düşünebilirsiniz). Bunun üzerinde, diğer salt okunur katmanlar var. Bu katmanlar (ara görüntüler de denir), Docker görüntüsünün derleme komutu yürütüldüğünde ve Dockerfile'daki komutlar yürütüldüğünde oluşturulur.

Dockerfile'ınız from, run ve / veya copy komutları içeriyorsa, imajı oluştururken çalıştırma komutu kendi imaj ID'sine sahip bir katman oluşturacaktır. Ardından, görüntü / katman docker geçmişinde görüntülenecek ve görüntünün kimliği ve tarihi de görüntülenecektir. Sonraki talimatlar başka bir giriş oluşturur ve bu böyle devam eder. CREATED BY sütunu kabaca Dockerfile'daki bir satıra karşılık gelir. Aşağıda gösterildiği gibi.

'Docker geçmişi' komutu simgesi

$ docker görüntüleri

Makinede mevcut olarak saklanan tüm resimleri listeleyin.

$ docker incelemesi < GÖRÜNTÜ | KONTEYNER KİMLİĞİ >

Docker inspect, belirli bir Docker nesnesi hakkında düşük düzeyli bilgileri görüntüler. Hata ayıklama durumunda, nesnede depolanan veriler Docker bağlama noktasını çapraz kontrol etmek gibi çok faydalı olabilir.

Lütfen dikkat: Bu komut iki ana yanıt alır: görüntü düzeyinde ayrıntılı bilgi ve kapsayıcı düzeyinde ayrıntılı bilgi. Bu komuttan aşağıdaki bilgileri alabilirsiniz:

  • Kapsayıcı kimliği ve oluşturma zaman damgası

  • Mevcut durum (konteynerin durdurulup durdurulmadığını ve nedenini belirlemeye çalışırken kullanışlıdır)

  • Docker görüntü bilgileri, dosya sistemi bağlama, birim bilgileri ve bağlama

  • Konteynere aktarılan komut satırı parametreleri gibi ortam değişkenleri

  • Ağ yapılandırması: IPv4 ve IPv6 IP adresleri ve ağ geçidi ve yardımcı adresler

$ docker sürümü

Bu komut, bilgisayarda şu anda yüklü olan istemci ve sunucu sürümleri dahil olmak üzere Docker sürümünü görüntüler.

Evet, Docker bir istemci-sunucu uygulamasıdır. Arka plan programı (uzun süredir çalışan bir Linux arka plan hizmeti) sunucudur ve CLI birçok istemciden biridir. Docker daemon, birçok farklı aracın arka plan programıyla iletişim kurabileceği bir REST API'sini açığa çıkarır.

$ docker sürümü

Müşteri: Docker Engine-Topluluğu

Sürüm: 19.03.5

API sürümü: 1.40

Go sürümü: go1.12.12

Git kaydetme: 633a0ea

İnşa Tarihi: 13 Kasım Çarşamba 07:22:342019

İşletim Sistemi / Arch: darwin / amd64

Deneysel: yanlış

Sunucu: Docker Engine-Topluluğu

Motor:

Sürüm: 19.03.5

API sürümü: 1.40 (minimum sürüm 1.12)

Go sürümü: go1.12.12

Git kaydetme: 633a0ea

İnşa Tarihi: 13 Kasım Çar 07:29:192019

İşletim Sistemi / Kemer: linux / amd64

Deneysel: yanlış

containerd:

Sürüm: v1.2.10

GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339

runc:

Sürüm: 1.0.0-rc8 + dev

GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657

docker-init:

Sürüm: 0.18.0

GitCommit: fec3683

Docker sürüm çıktısı

Bu, bir istemci-sunucu mimarisinin nasıl kurulacağına dair bir resimdir

AWS ECS'de Docker

Bazen, yapılandırmanın doğru olup olmadığını hata ayıklamak veya çapraz kontrol etmek için çalışan Docker konteynerine girmeniz gerekir.

Docker exec -it kullanabilirsiniz < kapsayıcı kimliği > Kabuk erişimi elde etmek için / bin / bash. Hangi Docker görüntüsünün çalıştırılamayacağını öğrenmek istiyorsanız, örneğin bir AWS ECS kümesi kullanmak istiyorsanız, aşağıda gösterildiği gibi belirsiz bir hata mesajı alırsınız.

Açıkçası, bu hatanın birçok nedeni vardır, örneğin

1) Kodunuzla ilgili bir sorun var, yakalanmamış bir istisna oluşuyor ve Docker konteyneri başlatma sırasında çöküyor;

2) Bir EC2 bulut sunucusunda bir ECS kümesi kullanırken, yetersiz disk alanı vardır Bu sorun, ECS yerleştirme türünüz Fargate seçilmediyse ortaya çıkacaktır;

3) Mevcut Docker konteyneriniz, mevcut tüm EC2 belleğini kaplar.

Görevdeki temel kapsayıcıdan çıkıldı

Yakın zamanda hangi Docker konteynerinin başarısız olduğunu bulmak için aşağıdaki komutu yürütün. Hesabınızda sudo erişimi varsa, lütfen sudo'yu dikkate almayın. Verilen çıktıya göre konteyneri yeniden çalıştırarak başarısızlığın nedenini görüntülemek için bu komutu kullanabilirsiniz.

$ sudo docker ps -a --filter durumu = ölü - filtre durumu = çıkıldı - son 1

Şüpheniz varsa Docker hizmetini yeniden başlatın

$ sudo hizmet penceresi durdurma $ sudo hizmet docker başlangıcı # bir MAC'de docker kullanımını kullanırsınız veya alternatif olarak çalıştırırsınız $ killall Docker açık /Applications/Docker.app

Daha fazla açıklamaya gerek olmadığına inanıyorum.

Docker görüntüsünü temizleyin

$ docker system budama

Docker, kullanılmayan nesneleri (görüntüler, kapsayıcılar, birimler ve ağlar gibi) temizlemede muhafazakar bir yaklaşım benimsemiştir.

Docker'dan silmesini açıkça istemediğiniz sürece, bu nesneler genellikle silinmez. Bu nedenle, bu nesneler silinmezlerse, hızla çok yer kaplayacaklardır. Bu nedenle, kullanılmayan Docker görüntülerini temizlemek için aşağıdaki komutları düzenli olarak çalıştırmak çok önemlidir.

docker kill < KONTEYNER >

Çalışan bir konteyneri öldürün.

$ docker kill $ (docker ps -q)

Çalışan tüm kapları öldürün.

$ docker rm < KONTEYNER >

Şu anda çalışmayan bir kapsayıcıyı silin. Görüntü uzaktaki bir görüntü kitaplığında saklanırsa, etkilenmez.

$ docker rm $ (docker ps -a -q):

Çalışmayan tüm kapsayıcıları silin.

$ docker, my_container'ı günlüğe kaydeder

Kapsayıcı günlüğüne erişim, hata ayıklama sırasında çok kullanışlıdır.

Docker görüntüsünü uzak yansıtma kitaplığından çıkarın

1.Docker Hub

Docker Hub, açık konteyner görüntülerini bulmak ve paylaşmak için Docker tarafından sağlanan bir hizmettir.

Görüntüyü Docker Hub'dan yerel olarak çekmek istiyorsanız, Docker run komutundan sonra görüntü yolunu eklemeniz yeterlidir. Aşağıdaki komut, Rocker görüntüsünün kararlı sürümünün nasıl çekilip çalıştırılacağını açıklar

$ docker run --rm -p 8787: 8787 rocker / verse

Docker ilk önce görüntünün yerel bilgisayarda mevcut olup olmadığını kontrol etmeye çalışacaktır. Değilse, görüntüyü Docker Hub deposundan indirin. Bu özellik kutudan çıkar çıkmaz kullanılabilir.

$ docker rocker / ayet çekin

Yalnızca görüntüyü çekmek istiyor ancak görüntüyü çalıştırmak istemiyorsanız, docker pull komutunu çalıştırın.

Docker Hub'da oturum açmak istiyorsanız yukarıdaki komutu çalıştırıp şifreyi girebilirsiniz.

2. Docker görüntü kitaplığını özelleştirin

$ docker oturum açın your.docker.host.com

Kullanıcı adı: foo

Parola: ********

E-posta: user@myemail.com

Kimlik doğrulaması gerektiren genel bir özel Docker görüntü kitaplığından görüntüleri ayıklamak istiyorsanız, yukarıda gösterildiği gibi docker oturum açma komutunu kullanabilirsiniz. Lütfen yukarıdaki işlemi gerçekleştirirken ~ / .docker / config.json içinde olacağını unutmayın.

Dosyada bir giriş oluşturun. Kimlik doğrulama ayrıntılarını değiştirmek için ~ / .docker / config.json dosyasını değiştirin.

3. Amazon ECR

Amazon ECR (Amazon Elastic Container Registry), geliştiricilerin Docker container görüntülerini depolamasına, yönetmesine ve dağıtmasına olanak tanıyan, tam olarak yönetilen bir Docker kapsayıcı deposu. Amazon ECR, ECS (Elastic Container Service) ile sorunsuz bir şekilde çalışır. Görüntüyü ECR'den çıkarmanız gerekirse, aşağıdaki komuta başvurabilirsiniz.

AWS CLI'yi AWS erişim izinlerine ve anahtarlarına sahip bir IAM kullanıcısıyla yapılandırmanız gerekir.

Amazon ECR, IAM kullanıcılarının erişim anahtarlarına, ayna kitaplığının doğrulamasını geçip yansıtmayı ayıklayabilmeleri için IAM politikası aracılığıyla ecr: GetAuthorizationToken izni verilmesini gerektirir. Buna ek olarak, Amazon ECR Docker Credential Helper yardımcı programını kullanabilirsiniz. Aşağıdaki yöntem, AWS CLI'yi kullandığınızı ve tüm izinleri ayarladığınızı varsayar.

$ aws ecr list-images --repository-name = twitter-data-engine-core $ aws ecr açıklama-görüntüleri - depo-adı = twitter-veri-motoru-çekirdek $ aws ecr giriş-girişi - bölge us-doğu-1 - dahil-içermeyen-e-posta

Get-login komutu, uzun bir Docker oturum açma komutu oluşturacaktır. Sadece kopyalamanız ve çalıştırmanız gerekiyor. Elbette, AWS ECR'den Docker görüntü çıkarma işlemini gerçekleştirmeden önce kimlik doğrulaması yapmanız gerekir.

$ docker girişi -u AWS -p {YOUR_TEMPORARY_TOKEN} $ docker pull 723123836077.dkr.ecr.us-east-1.amazonaws.com/twitter-data-engine-core:build-9

Docker görüntülerini içe ve dışa aktarın

$ docker save your_docker_image: en yeni > /usr/local/your_docker_image.tar $ docker yükü < /usr/local/your_docker_image.tar

İhtiyaç duyuyorsanız ve görüntüyü sabit diske aktarmak ve Docker görüntüsüne yüklemek istiyorsanız, yukarıdaki komutu çalıştırabilirsiniz.

Bir Docker görüntüsünü bir makineden diğerine başka bir ortama (Docker görüntü havuzunun dışında) aktarmak istiyorsanız, bir dosyaya dışa aktarmak çok kullanışlıdır. Güvenlik nedeniyle bazı ortamlarda erişiminiz kısıtlanabilir. Bir ayna kitaplığı geçişine bir ayna kitaplığı uygulayamazsınız, bu nedenle bu çok kullanışlı bir komuttur.

orijinal:

https://medium.com/better-programming/the-ultimate-docker-command-list-d98ef300fe6d

Alibaba "Pinduoduo çalışanı Taobao hesabı bloke edildi" yanıtını verdi; WeChat ve Facebook yeni taç virüsü hackathonunu birlikte organize etti; Kubernetes 1.18 yayınlandı | Geek Manşetleri
önceki
Siri, 911'i otomatik olarak arar, Google bir tarama web sitesi oluşturur, IBM ilaç bileşenlerini test eder, uluslararası salgın önleyici eylem
Sonraki
ByteDance Wuhan 2.000 kişiyi işe alıyor ve büyük fabrika teklifinden uzaktaysanız, bu Java kuru mallarından eksiksiniz! | Güç Projesi
İşletmeniz hangi durumlarda yapay zekaya ihtiyaç duyar? | Milyonlarca insan AI öğreniyor
Canlı vücut algılama, yüz karşılaştırması ... Megvii FaceID'yi nasıl yapıyor? | Milyonlarca insan AI öğreniyor
Kıdemli Microsoft Araştırmacısı Interleaved Group Convolution'a Dayalı Verimli DNN'yi Açıkladı | Milyonlarca Kişi AI'yı Öğreniyor
Liu Tieyan makine öğrenimi hakkında konuşuyor: eğilimi çok fazla takip edin, düşünmemiz gerekiyor | Milyonlarca insan yapay zekayı öğreniyor
Fark ettin mi? Bahis dükkanındaki yürekleri ısıtan küçük detaylar
Tianhe Caddesi, insanların memnun kalacağı bir "kırmızı mülk" inşa etmek için her türlü çabayı göstermektedir
Zorlu sorunlarla başa çıkmada "Dört Giriş" e yardımcı olun ve iş ve üretimin yeniden başlamasına hizmet edin! Liaocheng Tarım Bilimleri Akademisi iş başında
Atılımlar yapın ve birinci sınıf için çabalayın Huancui Bölgesindeki tüm kasabalar zorlu, gerçek ve yeni hareketler gösterdi
Öğretmenlerin ve öğrencilerin güvenliğini sağlayın! Shandong genelinde okul açılış koşullarının doğrulanması şu şekilde gerçekleştirilir
Bilinen uzun ömürlülük "iyi alışkanlık", gelin ve kaç şeyi doğru yaptığınızı görün?
Bahar geldiğinde cilt tekrar tekrar kaşıntılı, şiş ve ağrılı olacaktır.Kürdeşen kurtulmanın bir yolu var mı?
To Top