Sei que isso não é muito usado por ser muito teórico mas gosto de ir no detalhe de algumas coisas. Pense que uma imagem do docker é uma estrutura de uma árvore de dependências. Os arquivos DOCKERFILE sempre começam com um FROM apontando para outra imagem. Mas como fazer a primeira imagem?
Esse tópico explica como criar uma imagem completamente do zero. Para isso vou construir uma pequena aplicação em C para exemplificar.
// hello.c #include <stdio.h> void main() { printf("Alo Anselme"); }
para compilar
gcc hello.c -static -o hello
Com isso pronto, vou para meu dockerfile
FROM scratch COPY hello / CMD ["/hello"]
Após isso:
docker build -t thiagoanselme/helloanselme docker run thiagoanselme/helloanselme

Sumário
- Criando uma imagem FROM SCRATCH com parametros
- Usando um "Github" onpremise
- Porque você já deveria estar usando Hashicorp Consul?
- Boas práticas na otimização de imagens docker
- Arquitetura Lambda e Arquitetura Kappa
- Modelando o Context map do zero
- Domain Driven Design estratégico
- Operações isentas de efeitos colaterais
- Banco de dados: Teorema CAP
Criando uma imagem FROM SCRATCH com parametros
Essa é uma pequena variante da primeira, suportando a passagem de um parametro. Vamos lá:

Compilando
gcc hello.c -static -o hello
Dockerfile
FROM scratch
COPY hello /
ENTRYPOINT ["/hello"]
CMD ["Anselme"]
Depois
docker build -t thiagoanselme/helloanselme:parameter
docker run thiagoanselme/helloanselme:parameter
docker run thiagoanselme/helloanselme:parameter "Thiago Anselme"

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.