Red Hat Training
A Red Hat training course is available for RHEL 8
11.2. runc
A RunC é uma implementação leve e portátil da Iniciativa de Contêineres Abertos (OCI), especificação de tempo de funcionamento de contêineres. O runC reúne muitas das características de baixo nível que tornam possível a utilização de contêineres em funcionamento. Ele compartilha muito código de baixo nível com o Docker, mas não depende de nenhum dos componentes da plataforma Docker.
runc suporta namespaces Linux, migração ao vivo, e tem perfis de desempenho portáteis. Ele também fornece suporte total para recursos de segurança Linux como SELinux, grupos de controle (cgroups), seccomp, e outros. Você pode construir e executar imagens com o runc, ou pode executar imagens compatíveis com o OCI com o runc.
11.2.1. Contêineres com runc
Com runc, os recipientes são configurados utilizando fardos. Um pacote para um contêiner é um diretório que inclui um arquivo de especificação chamado config.json
e um sistema de arquivos raiz. O sistema de arquivos raiz contém o conteúdo do contêiner.
Para criar um pacote, execute:
Especificações de $ runc
Este comando cria um arquivo config.json
que contém apenas uma estrutura de ossos nus que você precisará editar. Mais importante ainda, você precisará alterar o parâmetro args
para identificar o executável a ser executado. Por padrão, args
está configurado para sh
.
"args": [ "sh" ],
Como exemplo, você pode baixar a imagem base do Red Hat Enterprise Linux (ubi8/ubi
) usando o podman e depois exportá-la, criar um novo pacote para ela com o runc e editar o arquivo config.json
para apontar para essa imagem. Você pode então criar a imagem do contêiner e executar uma instância dessa imagem com o runc. Use os seguintes comandos:
# podman pull registry.redhat.io/ubi8/ubi # podman export $(podman create registry.redhat.io/ubi8/ubi) > rhel.tar # mkdir -p rhel-runc/rootfs # tar -C rhel-runc/rootfs -xf rhel.tar # runc spec -b rhel-runc # vi rhel-runc/config.json Change any setting you like # runc create -b rhel-runc/ rhel-container # runc start rhel-container sh-4.2#
Neste exemplo, o nome da instância do recipiente é rhel-container
. Executando esse recipiente, por padrão, inicia-se uma concha, para que você possa começar a olhar ao redor e executar comandos a partir do interior daquele recipiente. Digite exit
quando estiver pronto.
O nome de uma instância de recipiente deve ser único no anfitrião. Para iniciar uma nova instância de um contêiner:
# runc start <container_name>
Você pode fornecer o diretório do pacote usando a opção -b
. Por padrão, o valor para o pacote é o diretório atual.
Você precisará de privilégios de raiz para iniciar recipientes com runc. Para ver todos os comandos disponíveis para o runc e sua utilização, execute runc --help
.