Qual é a diferença entre os comandos docker run
e docker create
?
Eu costumo usar, run
mas às vezes na documentação que vejo create
.
Docker de --help
conta
create Create a new container
run Run a command in a new container
Isso significa que run
é usado quando precisamos passar um comando para um novo contêiner? Qual é o objetivo create
então?
Tecnicamente,
docker run
=docker create
+docker start
.fonte
docker run
=docker create
+docker start
+docker attach
. Semattach
, o contêiner iniciado é executado em segundo planodocker create
O comando cria um contêiner gravável a partir da imagem e o prepara para execução .docker run
comando cria o contêiner (o mesmo quedocker create
) e o inicia .fonte
As outras respostas têm isso coberto, mas pensei em mostrar as linhas de comando shell equivalentes porque isso deixa muito claro:
é o mesmo que
Aqui,
docker create
é usado para criar um contêiner a partir da imagem nomeada e produz o id do contêiner criado edocker start
é usado para iniciar o contêiner com esse id. A-a
opção faz com que o terminal seja conectado de forma que o contêiner seja executado em primeiro plano, o que é o comportamento padrão dodocker run
.Um contêiner que foi criado, mas nunca iniciado terá um
Created
status; isso pode ser visto comdocker container ls -a
.fonte
Sou novo no docker e comecei a brincar com ele;
Minha opinião é que docker run essencialmente faz o seguinte: (na ordem de ..) docker create , docker start , docker attach , uma vez que ele se conecta imediatamente ao shell ativo depois que você executa o comando 'run' .
fonte
A execução do Docker é basicamente para executar comandos no contêiner.
A descrição acima é para a criação de um terminal bash. E nos faça usar comandos bash no contêiner.
Docker create é criar um contêiner a partir de uma imagem Docker.
O acima é para criar um docker um contêiner de nome "docker-ubuntu" a partir da imagem "ubuntu"
fonte
docker run -it <Container name>
sem fazer / bin / bash. Por exemplo, o Ruby executará automaticamente um executável chamado irb. Além disso, você pode executar run -d, que é feito com dockersamples / static-site que não faz logon. Então eu acho que não faz exec, mas apenas começa.