Uma outra dica legal é o que conseguimos fazer com funções dentro nos nossos arquivos .zshrc ou .bashrc. Podemos, por exemplo, criar uma função 'php' para utilizar uma imagem do docker permitindo a utilização da CLI do PHP sem a instalação do mesmo diretamente na máquina. Ficaria assim:
php() {
docker run --rm --interactive --tty \
--volume $PWD:/app \
php:7.4 $@
}
Esta função roda a imagem 'php:7.4' do docker no modo interativo (--interactive), permitindo que comandos sejam executados enquanto o container está rodando e alocando uma sessão de terminal com o container (--tty). E com o parâmetro --rm eu defino que o container será destruído após o término da execução do comando.
Eu ainda crio um volume apontando o $PWD, a pasta onde o comando está sendo executado, como '/app' dentro do meu container e passo a expressâo '$@' informando que as outras opções passadas a função serão adicionadas ao comando do docker. Sendo assim, caso eu digite php -S 0.0.0.0:8080
um servidor PHP será iniciado utilizando a versão 7.4 do PHP, especificada pela imagem do docker, na raiz de onde o comando foi executado.
Caso seja a primeira execução a imagem será baixada e logo após o comando será executado.
O exemplo foi um pouco mais complexo mas acredito que serve bem pra exemplificar o poder desse tipo de ferramenta.