Você pode implementar o seguinte fluxo de trabalho:
- crie um contêiner docker e especifique um nome para que você possa consultá-lo facilmente (por exemplo, em scripts)
- inicie e use algo como ponto de entrada que mantém o contêiner em execução
- Use
docker exec container cmd ...
para emitir seus comandos de criação e teste - Pare o contêiner
- Remover a imagem
O docker exec ...
é como um acesso de shell remoto a uma máquina de rede. Por padrão, ele não é interativo e também não aloca um tty. Isso deve ser bom para compilar e executar conjuntos de testes. O comando encaminha corretamente o status de saída do comando executado dentro do contêiner.
Um job de construção pode ser abortado por meio de:
-
docker stop container
(envia TERM e KILL e espera entre), ou -
docker kill container
ou mesmo -
docker exec container pkill someexecutable
O fluxo de trabalho com comandos concretos:
$ docker create --name cxx-devel \
-v $HOME/src:/srv/src:ro -v $HOME/build:/srv/build \
gsauthof/fedora-cxx-devel:23
$ docker start cxx-devel # <- entrypoint is /usr/bin/sleep infinity
$ docker exec cxx-devel /srv/src/projecta/build.sh
$ docker exec cxx-devel /srv/src/projecta/check.sh
$ docker stop cxx-devel
$ docker rm cxx-devel
Para um exemplo real que usa esse fluxo de trabalho, você pode ver este .travis.yml , os scripts de IC reais , o script sendo executado dentro do contêiner e o arquivos docker das imagens usadas.