SlideShare uma empresa Scribd logo
1 de 27
Padrões,
Especificações,
Runtimes: construíndo
containers melhores
carlos.fernandes@venkix.com
venkix.com
AGENDA
Padrões e Especificações adotados
Exemplo
Q&A
Containers através do tempo
Projetos Open-source
Containers através do tempo
Jails (BSD Unix) – melhorias no chroot
Namespaces (Linux) – isolamento de processos
Zones (Solaris Unix) – conceito de snapshots (imagens)
Parallels (OpenVZ Linux) – virtualização no nível do S.O.
Cgroups (Linux) – isolamento de recursos (cpu, memoria, disco, etc.)
Workload partition (Linux) – virtualização no nível do S.O.
chroot (BSD Unix)1982
2000
2002
2004
2005
2006
2007
2008 LXC (Linux) – Linux container features (cgroups, namespace) num único produto
2013 Docker (Linux) – simples ferramenta de usuário para construir containers
2014 Google lança Kubernetes
2015
A Cloud Native Computing Foundation (CNCF) foi criada para promover
containers. Kubernetes se tornou um gerenciador de containers open source,
doado pela Google e que serviu como base tecnologica para fundação. Os
membros fundadores do CNCF são: Google, CoreOS, Mesosphere, Red Hat,
Twitter, Huawei, Intel, Cisco, IBM, Docker, Univa, e VMware.
Docker inicia uma parceria com o CoreOS para a criação do OCI (Open Container
Initiative) uma estrutura de governança aberta para o desenvolvimento de padrões
de mercado para containers (formato e runtime).
2016
Docker 1.11 é lançado (divisão e modularização da engine!)
Docker passa a usar os padrões do OCI (runc) e CNCF (containerd).
Runc e Containerd são partes de productos como Apache Mesos, CoreOS Rocket,
Kubernetes, AWS e CloudFoundry.
a mesma UI e comandos
usuário interage com o Docker engine
docker engine se comunica com o containerd
containerd aciona o RUNC para a execução
dos containers
Padrões e Especificações adotados
OCI – Open Container Initiative
Padrões para o Runtime e Formato de Imagens e Containers.
https://www.opencontainers.org
RUNC: implementação de referência do OCI
para a executing container a partir de um
filesystem bundle e do arquivode configuração
padrão OCI.
RUNC necessita de duas partes importantes
de informação para criar um container: um
arquivo de configuração de execução OCI
(config.json) e um root filesystem (bundle)
contendo o filesystem para o container
Usando o OCI-RUNC
Para usar o RUNC, você deve ter o container
no formato OCI bundle. Você pode usar
Docker para exportar um rootfs filesystem a
partir de um Docker container existente.
Uma vez que o OCI bundle é construído e
arquivo de configuração OCI (config.json) é
gerado, você pode executar o container
através do comando run para criar, inicializar e
deletar o container após o seu uso.
(https://github.com/opencontainers/runc)
Usando o OCI-RUNC
Abaixo, fragmento da declaração que acompanha o comando help do runc:
CNCF – Cloud Native Computing Foundation
Padrões para aplicações cloud native.
https://www.cncf.io/
CNCF é fundação dedicada a fazer cloud native computing universal e sustentável. Cloud native
computing usa um conjunto de software oper source para deployar aplicações como micro serviços em
containers e dinamicamente orquestrando esses containers para otimizar a utilização de recursos. As
tecnologias Cloud native permitem que desenvolvedores construam aplicações melhores e mais eficazes.
Base para aplicações cloud native: micro serviços, containers, orquestração e monitoriamento.
Principais projetos: Kubernetes, Containderd, Prometheus,
CNCF – Cloud Native Computing Foundation
Padrões para aplicações cloud native.
https://www.cncf.io/
Padrão Cloud native de execução e orquestração de containers: kubernetes
Kubernetes usa uma interface conhecida como Container Runtime Interface (CRI) para a execução de
containers, ou seja, qualquer fornecedor de container que implemente essa interface pode ser gerenciado
pelo kubernetes.
CNCF – Cloud Native Computing Foundation
Padrões para aplicações cloud native.
https://www.cncf.io/
CRI-O (https://cri-o.io/)
CRI-O é uma implementação do container runtime inteface (CRI) do kubernetes, que usa runtime
compatível como padrão OCI, ou seja, RUNC. Ele é uma alternativa ao uso do Docker, mais leve para ser
usado como runtime no kubernetes. CRI-O pode fazer pull de imagem de qualquer container registry.
O projeto segue o desenvolvimento do kubernetes e tem como principais contribuidores a Red Hat, IBM e
Intel, Suse.
CNCF – Cloud Native Computing Foundation
Padrões para aplicações cloud native.
https://www.cncf.io/
Containerd (https://containerd.io/)
Um padrão de mercado para runtime de container com enfase na simplicidade, robustez e portabilidade.
containerd é disponibilizado como um deamon. Ele controla o ciclo de vida inteiro de um container (pull,
run, delete).
Containerd (https://containerd.io/) – detalhe dos compomentes do produto
Projetos Open Source
https://mobyproject.org
Base de projetos open source ligados a containers e berço do desenvolvimento do Docker, Containerd e
RUNC.
https://github.com/opencontainers/runc
RUNC é uma ferramenta para execução de containers de acordo com as especificações e padrões do
OCI.
https://github.com/containerd/containerd
Containerd é um padrão de mercado para execução de containers, com ênfase em simplicidade, robustez
e portabilidade.
https://github.com/kubernetes-sigs/cri-o
Implementação do Kubernetes CRI baseado nos padrões e especificações do OCI.
https://github.com/kubernetes/kubernetes
Gerenciador de execução de containers, padrão de mercado.
https://github.com/rootless-containers/rootlesskit
"fake-root" utilitário, desenvolvido principalmente para executar Docker e Kubernetes sob um usuário sem
privilégios.
https://github.com/genuinetools/img/
Aplicação independente, deamon-less, desenvolvido e baseado nos padrões OCI, para construir images a
partir de Dockerfiles e executar containers sem a necessidade de usuário com privilégios.
https://github.com/containers/libpod
Libpos é uma biblioteca usada para criar containers para pods (kubernetes), baseado nos padões OCI.
https://github.com/containers/skopeo/
Skopeo trabalha com registries locais e remotos, obtendo informações e conteúdo de imagens.
EXEMPLO
(a) Desenvolvedor cria imagem contendo a
aplicação desenvolvida usando Docker
(b) Em seguida, faz o
push da imagem para
o registry remoto
(c) No servidor (sem Docker) usa-
se skopeo para o pull da imagem;
(d) oci-image-tool para construir o
container bundle; (e) o runc é
usado para a execução do
container
(a) Desenvolvedor cria imagem contendo a aplicação desenvolvida usando Docker:
escrever um Dockerfile para o build;
executar o comando de build: docker build -t <nome:tag> .
(b) Em seguida, faz o push da imagem para o registry remoto:
criar tag para o push: docker tag nome:tag url.registry:5000/<nome:tag>
fazer o push: docker push url.registry:5000/<nome:tag>
(c) No servidor (sem Docker) usa-se skopeo para o pull da imagem:
skopeo copy docker://url.registry:5000/<nome:tag> oci:<nome:tag>
(d) oci-image-tool para construir o container bundle:
oci-image-tool create --ref name=<tag> <nome> <nome>-bundle
(e) o runc é usado para a execução do container:
runc run -d -b <nome>-bundle/ <nome>
No workstation do desenvolvedor (Windows 10 pro):
https://docs.docker.com/install/
No servidor aonde a aplicação será executada (Linux CentOS 7):
Implementação de referência da OCI para formato imagens e containers
https://github.com/opencontainers/image-tools
Implementação de referência da OCI para execução de containers
https://github.com/opencontainers/runc
Utilitário para execução de várias operações com containers, imagens e registries
https://github.com/containers/skopeo
Obs.:skopeo é um projeto aonde a Red Hat tem trabalhado bastante. É uma ferramenta muito útil para
cópia de imagens entre diferentes registries. Um outro projeto aonde a Red Hat investe e que vale a
atenção é o podman ("Pod Manager", https://podman.io/), cuja a proposta e a execução do "pod“, fora do
kubernetes.
Setup do workstation e do Servidor
Q&A
carlos.fernandes@venkix.com
venkix.com
@cafrjbr

Mais conteúdo relacionado

Mais procurados (20)

Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Docker
DockerDocker
Docker
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Docker compose
Docker composeDocker compose
Docker compose
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 

Semelhante a Construindo containers melhores através de padrões e projetos open source

Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Renato Groff
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Renato Groff
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesRodrigo Cândido da Silva
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Renato Groff
 

Semelhante a Construindo containers melhores através de padrões e projetos open source (20)

Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Docker
DockerDocker
Docker
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 

Construindo containers melhores através de padrões e projetos open source

  • 2. AGENDA Padrões e Especificações adotados Exemplo Q&A Containers através do tempo Projetos Open-source
  • 4. Jails (BSD Unix) – melhorias no chroot Namespaces (Linux) – isolamento de processos Zones (Solaris Unix) – conceito de snapshots (imagens) Parallels (OpenVZ Linux) – virtualização no nível do S.O. Cgroups (Linux) – isolamento de recursos (cpu, memoria, disco, etc.) Workload partition (Linux) – virtualização no nível do S.O. chroot (BSD Unix)1982 2000 2002 2004 2005 2006 2007 2008 LXC (Linux) – Linux container features (cgroups, namespace) num único produto
  • 5. 2013 Docker (Linux) – simples ferramenta de usuário para construir containers
  • 6. 2014 Google lança Kubernetes
  • 7. 2015 A Cloud Native Computing Foundation (CNCF) foi criada para promover containers. Kubernetes se tornou um gerenciador de containers open source, doado pela Google e que serviu como base tecnologica para fundação. Os membros fundadores do CNCF são: Google, CoreOS, Mesosphere, Red Hat, Twitter, Huawei, Intel, Cisco, IBM, Docker, Univa, e VMware. Docker inicia uma parceria com o CoreOS para a criação do OCI (Open Container Initiative) uma estrutura de governança aberta para o desenvolvimento de padrões de mercado para containers (formato e runtime).
  • 8. 2016 Docker 1.11 é lançado (divisão e modularização da engine!) Docker passa a usar os padrões do OCI (runc) e CNCF (containerd). Runc e Containerd são partes de productos como Apache Mesos, CoreOS Rocket, Kubernetes, AWS e CloudFoundry. a mesma UI e comandos usuário interage com o Docker engine docker engine se comunica com o containerd containerd aciona o RUNC para a execução dos containers
  • 10. OCI – Open Container Initiative Padrões para o Runtime e Formato de Imagens e Containers. https://www.opencontainers.org RUNC: implementação de referência do OCI para a executing container a partir de um filesystem bundle e do arquivode configuração padrão OCI. RUNC necessita de duas partes importantes de informação para criar um container: um arquivo de configuração de execução OCI (config.json) e um root filesystem (bundle) contendo o filesystem para o container
  • 11. Usando o OCI-RUNC Para usar o RUNC, você deve ter o container no formato OCI bundle. Você pode usar Docker para exportar um rootfs filesystem a partir de um Docker container existente. Uma vez que o OCI bundle é construído e arquivo de configuração OCI (config.json) é gerado, você pode executar o container através do comando run para criar, inicializar e deletar o container após o seu uso. (https://github.com/opencontainers/runc)
  • 12. Usando o OCI-RUNC Abaixo, fragmento da declaração que acompanha o comando help do runc:
  • 13. CNCF – Cloud Native Computing Foundation Padrões para aplicações cloud native. https://www.cncf.io/ CNCF é fundação dedicada a fazer cloud native computing universal e sustentável. Cloud native computing usa um conjunto de software oper source para deployar aplicações como micro serviços em containers e dinamicamente orquestrando esses containers para otimizar a utilização de recursos. As tecnologias Cloud native permitem que desenvolvedores construam aplicações melhores e mais eficazes. Base para aplicações cloud native: micro serviços, containers, orquestração e monitoriamento. Principais projetos: Kubernetes, Containderd, Prometheus,
  • 14. CNCF – Cloud Native Computing Foundation Padrões para aplicações cloud native. https://www.cncf.io/ Padrão Cloud native de execução e orquestração de containers: kubernetes Kubernetes usa uma interface conhecida como Container Runtime Interface (CRI) para a execução de containers, ou seja, qualquer fornecedor de container que implemente essa interface pode ser gerenciado pelo kubernetes.
  • 15. CNCF – Cloud Native Computing Foundation Padrões para aplicações cloud native. https://www.cncf.io/ CRI-O (https://cri-o.io/) CRI-O é uma implementação do container runtime inteface (CRI) do kubernetes, que usa runtime compatível como padrão OCI, ou seja, RUNC. Ele é uma alternativa ao uso do Docker, mais leve para ser usado como runtime no kubernetes. CRI-O pode fazer pull de imagem de qualquer container registry. O projeto segue o desenvolvimento do kubernetes e tem como principais contribuidores a Red Hat, IBM e Intel, Suse.
  • 16. CNCF – Cloud Native Computing Foundation Padrões para aplicações cloud native. https://www.cncf.io/ Containerd (https://containerd.io/) Um padrão de mercado para runtime de container com enfase na simplicidade, robustez e portabilidade. containerd é disponibilizado como um deamon. Ele controla o ciclo de vida inteiro de um container (pull, run, delete).
  • 17. Containerd (https://containerd.io/) – detalhe dos compomentes do produto
  • 19. https://mobyproject.org Base de projetos open source ligados a containers e berço do desenvolvimento do Docker, Containerd e RUNC. https://github.com/opencontainers/runc RUNC é uma ferramenta para execução de containers de acordo com as especificações e padrões do OCI. https://github.com/containerd/containerd Containerd é um padrão de mercado para execução de containers, com ênfase em simplicidade, robustez e portabilidade. https://github.com/kubernetes-sigs/cri-o Implementação do Kubernetes CRI baseado nos padrões e especificações do OCI.
  • 20. https://github.com/kubernetes/kubernetes Gerenciador de execução de containers, padrão de mercado. https://github.com/rootless-containers/rootlesskit "fake-root" utilitário, desenvolvido principalmente para executar Docker e Kubernetes sob um usuário sem privilégios. https://github.com/genuinetools/img/ Aplicação independente, deamon-less, desenvolvido e baseado nos padrões OCI, para construir images a partir de Dockerfiles e executar containers sem a necessidade de usuário com privilégios. https://github.com/containers/libpod Libpos é uma biblioteca usada para criar containers para pods (kubernetes), baseado nos padões OCI. https://github.com/containers/skopeo/ Skopeo trabalha com registries locais e remotos, obtendo informações e conteúdo de imagens.
  • 22. (a) Desenvolvedor cria imagem contendo a aplicação desenvolvida usando Docker (b) Em seguida, faz o push da imagem para o registry remoto (c) No servidor (sem Docker) usa- se skopeo para o pull da imagem; (d) oci-image-tool para construir o container bundle; (e) o runc é usado para a execução do container
  • 23. (a) Desenvolvedor cria imagem contendo a aplicação desenvolvida usando Docker: escrever um Dockerfile para o build; executar o comando de build: docker build -t <nome:tag> .
  • 24. (b) Em seguida, faz o push da imagem para o registry remoto: criar tag para o push: docker tag nome:tag url.registry:5000/<nome:tag> fazer o push: docker push url.registry:5000/<nome:tag>
  • 25. (c) No servidor (sem Docker) usa-se skopeo para o pull da imagem: skopeo copy docker://url.registry:5000/<nome:tag> oci:<nome:tag> (d) oci-image-tool para construir o container bundle: oci-image-tool create --ref name=<tag> <nome> <nome>-bundle (e) o runc é usado para a execução do container: runc run -d -b <nome>-bundle/ <nome>
  • 26. No workstation do desenvolvedor (Windows 10 pro): https://docs.docker.com/install/ No servidor aonde a aplicação será executada (Linux CentOS 7): Implementação de referência da OCI para formato imagens e containers https://github.com/opencontainers/image-tools Implementação de referência da OCI para execução de containers https://github.com/opencontainers/runc Utilitário para execução de várias operações com containers, imagens e registries https://github.com/containers/skopeo Obs.:skopeo é um projeto aonde a Red Hat tem trabalhado bastante. É uma ferramenta muito útil para cópia de imagens entre diferentes registries. Um outro projeto aonde a Red Hat investe e que vale a atenção é o podman ("Pod Manager", https://podman.io/), cuja a proposta e a execução do "pod“, fora do kubernetes. Setup do workstation e do Servidor