Por que as imagens oficiais do Docker estão usando um sistema operacional

0

Os contêineres do Docker não precisam de um sistema operacional e de um hypervisor porque usam o kernel do host. Então, por que todas as imagens oficiais como: php, nginx, .. o que quer que esteja usando um sistema operacional em suas imagens:

Exemplo: a imagem oficial do PHP 7 (do Docker Hub) está usando o Debian:

FROM debian:jessie

Os contêineres de aplicativos não são VMs e fornecem isolamento de processo, não isolamento de sistema operacional.

Estou sentindo falta de algo importante no meu entendimento?

    
por 4m1nh4j1 14.08.2016 / 16:11

1 resposta

2

Um sistema operacional é mais que um kernel; é um kernel MAIS uma tonelada de arquivos no espaço do usuário. Então, coisas como os arquivos em /bin e /etc e /usr/bin e /lib

Quando você executa um contêiner, seu programa normalmente requer que o código de suporte (bibliotecas compartilhadas, scripts) seja executado.

Isso nem sempre é obrigatório. por exemplo, se você usa go para escrever seu programa, você não pode ter nada, exceto o arquivo único

$ cat hello.go
package main

import "fmt"

func main() {
  fmt.Println("Hello, World")
}
$ go build hello.go
$ strip hello

Agora, o seu dockerfile pode ser

FROM scratch
COPY hello /
CMD ["/hello"]

Caso trivial; é apenas um exemplo.

Mas se você tentar executar php , você conhece todas as dependências? Às vezes é mais fácil trazer uma cópia mínima de um sistema operacional comum. Mas isso tem alguns riscos de segurança.

(veja também link )

    
por 14.08.2016 / 16:25