Docker executa o script bash e remove o contêiner

1

Existe uma maneira de executar um script bash dentro de um contêiner e, em seguida, remover o contêiner, tudo em uma única linha? O script deve poder gravar na pasta em que está atualmente.

Eu tentei

docker run --rm -ti ubuntu:trusty bash -c 'source runme.sh'

mas o bash não consegue encontrar o arquivo, estou assumindo que o contêiner não tem acesso à pasta onde está o script.

    
por alexandernst 03.10.2016 / 18:04

2 respostas

8

Se o script não estiver disponível dentro do contêiner, você precisará montar o script como um volume dentro do contêiner:

$ cat << EOF > sample_script.sh
echo 'Hello, world'
EOF

Execute o contêiner docker da seguinte maneira (aqui, /path/to/sample_script.sh é o caminho no host):

$ docker run -v /path/to/sample_script.sh:/sample_script.sh \
  --rm ubuntu bash sample_script.sh

Hello, world

O contêiner será removido após a execução. Note que você não precisa executá-lo interativamente, a saída padrão será exibida.

A referência execução do docker tem os detalhes sobre como usar volumes dessa maneira .

    
por 03.10.2016 / 18:29
1

Se tudo o que você quer fazer é executar um script, você pode usar o bash para ler o script do stdin.

sample_script.sh < docker run --rm -i ubuntu bash -c 'source /dev/stdin'
    
por 11.10.2018 / 00:40

Tags