Docker run vs create


93

docker runVe docker createkomutlar arasındaki fark nedir ?

Genelde kullanıyorum runama bazen belgelerde görüyorum create.

Docker --helpsöyler

create    Create a new container
run       Run a command in a new container

runYeni bir konteynere bir komut iletmemiz gerektiğinde bunun kullanıldığı anlamına mı geliyor ? O zaman amacı ne create?

Yanıtlar:


105

Docker belgelerinden

Docker create komutu, belirtilen görüntü üzerinde yazılabilir bir kap katmanı oluşturur ve bunu belirtilen komutu çalıştırmak için hazırlar. Konteyner kimliği daha sonra STDOUT'a yazdırılır. Bu, konteynerin hiçbir zaman başlatılmaması dışında docker run -d'ye benzer . Ardından, kapsayıcıyı herhangi bir noktada başlatmak için docker start komutunu kullanabilirsiniz.

Bu kullanışlı istediğiniz bir konteyner kurmak yapılandırmayı öncesinde zamanın o ihtiyacınız olduğunda başlamak için hazır olması için. Yeni konteynerin başlangıç ​​durumu oluşturulur.


2
Benzerliği vurgulayan --run, --create ile aynı argümanları kabul eder (sadece --detach, --detach-keys ve --sig-proxy eklenerek), bkz. Docs.docker.com/v17.09 / engine / reference / commandline / run /…
Marvin

118

Teknik olarak, docker run= docker create+ docker start.


43
Aslında, bunu öğrenmek için birkaç saat harcadım docker run= docker create+ docker start+ docker attach. Olmadan attach, başlatılan konteyner arka planda çalışır
webbower

19

1
U "docker run, konteyneri oluşturur (docker create ile aynı) ve onu çalıştırır." <--- döngüsel tanım ve exec ve start ile "çalıştırır" dediğiniz şey arasındaki farkı belirlemediniz. (Docker run'da koşma tanımınıza bakarsak "çalıştırır" dediğinizde, bu yarat ve çalıştır anlamına gelir, yani sonsuz bir sayı elde edersiniz. "çalıştırır" .. ama sonra "çalıştırır" ı exec ve starttan ayırmalısınız, yani start ve exec mi yoksa sadece başlayın). Belki de -d, çalıştırma yok demektir. ve -d olmadan başlar ve exec
barlop

8

Diğer cevaplar bunu kapsıyor, ancak eşdeğer kabuk komut satırlarını göstermeyi düşündüm çünkü bunu gerçekten açık hale getiriyor:

$ docker run myimage

aynıdır

$ docker start -a $(docker create myimage)

Burada, docker createadlandırılmış görüntüden bir konteyner oluşturmak için kullanılır ve oluşturulan konteyner kimliğini çıkarır ve docker startkonteyneri bu id ile başlatmak için kullanılır. Bu -aseçenek, terminalin bağlanmasına neden olur, böylece konteyner ön planda çalışır ki bu, varsayılan davranışıdır docker run.

Oluşturulmuş ancak hiç başlatılmamış bir kapsayıcı bir Createdduruma sahip olacaktır ; bu ile görülebilir docker container ls -a.


6

Docker'da yeniyim ve onunla oynamaya yeni başladım;

Benim fikrime göre , docker run esasen aşağıdakileri yapar: (.. sırasına göre) docker create , docker start , docker attach , çünkü siz 'run' komutunu yaptıktan hemen sonra aktif kabuğa eklenir .


1
Cevabınızı fark etmeden önce bununla ilgili bir yorum yayınladım. Keşke bunu bir saat kadar önce görmüş olsaydım.
webbower

-3

Docker run temelde konteynerde komut çalıştırmak içindir.

docker run -it <Container Name> /bin/bash

Yukarıdakiler bir bash terminali oluşturmak içindir. Ve kapsayıcıda bash komutlarını kullanmamızı sağlayın.

Docker create bir Docker Image'dan bir konteyner oluşturmaktır.

docker create -d /var/lib:/var/lib --name docker-ubuntu ubuntu

Yukarıdakiler, "ubuntu" görüntüsünden "docker-ubuntu" adında bir konteyner oluşturmaktır.


1
docker run -it <Container name>Sonra / bin / bash yapmadan yapabilirsiniz . Örneğin ruby, irb adlı bir yürütülebilir dosyayı otomatik olarak çalıştıracaktır. Ayrıca, oturum açmayan dockersamples / static-site ile yapılan run -d komutunu da kullanabilirsiniz. Bu yüzden yürütme yapmadığını düşünüyorum ama sadece başlatıyor.
barlop

'docker run' ile konteyner zaten oluşturulmuşsa çalıştırabilir ve oluşturup yoksa çalıştırabilirsiniz
Sergii Getman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.