Estou tentando pegar um contêiner docker de uma máquina e executá - lo em outra e encontrar este erro:"Resposta de erro do daemon: nenhum comando especificado".
Abaixo está um exemplo simplificado mostrando o problema:
docker --versionDocker version 1.10.1, build 9e83765docker pull ubuntudocker run --name u1 -dit ubuntu:latestdocker export -o exported u1docker stop u1docker rm u1docker import exported ubuntu:importeddocker run --name u1 -dit ubuntu:importeddocker: Error response from daemon: No command specified.
Nesse exemplo, primeiro puxamos uma imagem (ubuntu) e criamos / executamos com sucesso o contêiner u1 dele. Em seguida, exportamos esse contêiner para um arquivo (exported), pare / remova o contêiner, importe o arquivo para uma nova imagem (ubuntu:imported) e tente executar um novo contêiner a partir dele. Falha.
docker export não exporta tudo sobre o contêiner-apenas o sistema de arquivos. Portanto, ao importar o dump de volta para uma nova imagem do docker, sinalizadores adicionais precisam ser especificados para recriar o contexto.
Por exemplo, se o contêiner original estava funcionando bem porque o Dockerfile usado para criar sua imagem tinha CMD ["/usr/bin/supervisord"] nele, importe seu despejo dessa maneira:
No entanto, não conseguimos encontrar o comando para executá-lo. A solução estava listando todos os contêineres na máquina exportadora e observando o comando executado.
docker ps
A partir daí, poderíamos descobrir como executar o comando correto:
docker run --name msSQL -p 1401:1433 -d mssql:latest /opt/mssql/bin/sqlservr
Quando você exporta um contêiner, ele perde seu próprio histórico, que contém camadas de imagem e metadados. Então seu contêiner perdeu seus Estados pid.
Cada contêiner deve ter um processo inicial (raiz). Você está substituindo o ponto de entrada padrão no dockerfile como bash. [editado] acho que mesmo você não substitui usa padrão, não definido na imagem base do ubuntu. Portanto, você deve iniciar seu processo inicial com o comando cmd. Eu acho que não há bug. É um recurso dockerfile para reutilização.
docker save nginx:alpine | ssh rmeote-host docker import -sha256:f6098fc18511abbbfe9e52ed0d0ccc1fbe4f7b018ee1cd85392999aa92ebba1b# we see errorsdocker container run -d -p 2020:80 nginx:alpinedocker: Error response from daemon: No command specified.See 'docker run --help'.
se estiver usando load
docker save nginx:alpine | ssh remote-host "cat - | docker load"Loaded image: nginx:alpinedocker container run --name nginx -dp 2020:80 nginx:alpine7cc8836bef1e276f8aa986a09186e9e227542be3b094b082b9ab1f6d3c290a99docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES7cc8836bef1e nginx:alpine "/docker-entrypoint.…" 2 seconds ago Up 1 second 0.0.0.0:2020->80/tcp, :::2020->80/tcp nginx