Eu vejo no seu problema que você tem duas maneiras de contornar isso:
- Gere uma imagem do docker a partir de um contêiner que tenha todos os pacotes e configurações que você precisa persistentes. Dessa forma, você não precisa instalar pacotes e fazer configurações toda vez que cria um novo contêiner
- Crie uma imagem de encaixe personalizada do Dockerfile com todos os pacotes que você precisa instalar. Ao executar o contêiner, você pode mapear arquivos personalizados e armazenamento de dados persistente usando
-v volume
.
Vamos usar um exemplo para tornar isso mais claro.
# docker run -it --name test_con ubuntu:16.04 /bin/bash
Vou instalar alguns pacotes, ou seja, vim, bash-completion e wget.
root@9c67dc1776cd:/# apt-get update
root@9c67dc1776cd:/# apt-get install vim bash-completion wget
Em seguida, crie uma nova imagem do Docker a partir desse contêiner. Eu a nomeei como test_con. Para isso, usaremos a opção de comando commit.
# docker commit -m "updated packages" test_con ubuntu:v1
Se a execução do comando for bem-sucedida, você deverá obter uma saída semelhante a essa.
sha256:cdf9dc8fe82407b49bae2a2840e7f59706ac84e9f6a0fff55a62afc7dd0db3c3
Confirme se um novo contêiner foi realmente criado com este comando:
# docker images
Crie um contêiner de teste e verifique se o wget está presente.
# docker run --name test --rm -it ubuntu:v1
root@401345aecec5:/# which wget
/usr/bin/wget
Para a segunda opção, você pode ver esta página wiki nos comandos docker . Isso ajudará você a personalizar suas imagens na criação inicial.