Será revisada a criação de um container com Ubuntu.
Execução de container Ubuntu:
$ docker container run -it ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
31e907dcc94a: Pull complete
Digest: sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
Status: Downloaded newer image for ubuntu:latest
root@c9a8918623e1:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Mas não tínhamos o comando curl instalado, pois as imagens de container possuem somente o que é necessário para que o container funcione, com o objetivo de ter a distribuição instalada:
root@c9a8918623e1:/# curl
bash: curl: command not found
Foi necessário atualizar os repositórios e instalar o comando curl:
root@c9a8918623e1:/# apt update
root@c9a8918623e1:/# apt install curl -y
root@c9a8918623e1:/# curl
curl: try 'curl --help' or 'curl --manual' for more information
Porém se sair do container e executar um novo container o comando curl novamente não existirá:
root@c9a8918623e1:/# exit
exit
$ docker container run -it ubuntu /bin/bash
root@bbca1411e36e:/# curl
bash: curl: command not found
O esperado é que quando o container Ubuntu for criado o comando curl esteja instalado. Para isso será utilizado o Dockerfile:
.: define o contexto (diretório utilizado pelo Docker Daemon para construção da imagem)
Se a imagem Dockerfile não for explicitada com -f Dockerfile será realizada a tentativa de buscar o arquivo no diretório atual
Verificação das imagens e containers existentes antes de construir a imagem:
$ docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bbca1411e36e ubuntu "/bin/bash" 25 minutes ago Exited (127) 23 minutes ago eager_booth
c9a8918623e1 ubuntu "/bin/bash" 31 minutes ago Exited (2) 25 minutes ago affectionate_hopper
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-curl latest f2f94ab20606 32 seconds ago 127MB
ubuntu latest edbfe74c41f8 2 weeks ago 78.1MB
Execução do container com a imagem construída com o comando curl instalado:
$ docker container run -it ubuntu-curl /bin/bash
root@1a7518811548:/# curl
curl: try 'curl --help' or 'curl --manual' for more information