Como instalar o Docker no Gentoo

Habilitando os módulos do kernel corretamente. 🐋


Como instalar o Docker no Gentoo

Nós já possuímos um tutorial de Docker para iniciantes que pode ser consultado aqui. Mas nesse artigo vamos mostrar os passos no Gentoo.

1. Habilite módulos no Kernel

Abra o menu de configuração do Kernel

su
cd /usr/src/linux
make menuconfig

E habilite os módulos

General setup  --->
    [*] POSIX Message Queues
    -*- Control Group support  --->
        [*]   Memory controller 
        [*]     Swap controller
        [*]       Swap controller enabled by default
        [*]   IO controller
        [ ]     IO controller debugging
        [*]   CPU controller  --->
              [*]   Group scheduling for SCHED_OTHER
              [*]     CPU bandwidth provisioning for FAIR_GROUP_SCHED
              [*]   Group scheduling for SCHED_RR/FIFO
        [*]   PIDs controller
        [*]   Freezer controller
        [*]   HugeTLB controller
        [*]   Cpuset controller
        [*]     Include legacy /proc/<pid>/cpuset file
        [*]   Device controller
        [*]   Simple CPU accounting controller
        [*]   Perf controller
        [ ]   Example controller 
    -*- Namespaces support
        [*]   UTS namespace
        -*-   IPC namespace
        [*]   User namespace
        [*]   PID Namespaces
        -*-   Network namespace
-*- Enable the block layer  --->
    [*]   Block layer bio throttling support
    -*- IO Schedulers  --->
        [*]   CFQ IO scheduler
            [*]   CFQ Group Scheduling support   
[*] Networking support  --->
      Networking options  --->
        [*] Network packet filtering framework (Netfilter)  --->
            [*] Advanced netfilter configuration
            [*]  Bridged IP/ARP packets filtering
                Core Netfilter Configuration  --->
                  <*> Netfilter connection tracking support 
                  *** Xtables matches ***
                  <*>   "addrtype" address type match support
                  <*>   "conntrack" connection tracking match support
                  <M>   "ipvs" match support
            <M> IP virtual server support  --->
                  *** IPVS transport protocol load balancing support ***
                  [*]   TCP load balancing support
                  [*]   UDP load balancing support
                  *** IPVS scheduler ***
                  <M>   round-robin scheduling
                  [*]   Netfilter connection tracking
                IP: Netfilter Configuration  --->
                  <*> IPv4 connection tracking support (required for NAT)
                  <*> IP tables support (required for filtering/masq/NAT)
                  <*>   Packet filtering
                  <*>   IPv4 NAT
                  <*>     MASQUERADE target support
                  <*>   iptables NAT support  
                  <*>     MASQUERADE target support
                  <*>     NETMAP target support
                  <*>     REDIRECT target support
        <*> 802.1d Ethernet Bridging
        [*] QoS and/or fair queueing  ---> 
            <*>   Control Group Classifier
        [*] L3 Master device support
        [*] Network priority cgroup
        -*- Network classid cgroup
Device Drivers  --->
    [*] Multiple devices driver support (RAID and LVM)  --->
        <*>   Device mapper support
        <*>     Thin provisioning target
    [*] Network device support  --->
        [*]   Network core driver support
        <M>     Dummy net driver support
        <M>     MAC-VLAN support
        <M>     IP-VLAN support
        <M>     Virtual eXtensible Local Area Network (VXLAN)
        <*>     Virtual ethernet pair device
    Character devices  --->
        -*- Enable TTY
        -*-   Unix98 PTY support
        [*]     Support multiple instances of devpts (option appears if you are using systemd)
File systems  --->
    <*> Overlay filesystem support 
    Pseudo filesystems  --->
        [*] HugeTLB file system support
Security options  --->
    [*] Enable access key retention support
    [*]   Enable register of persistent per-UID keyrings
    <M>   ENCRYPTED KEYS
    [*]   Diffie-Hellman operations on retained keys

2. Certifique-se de ter habilitado todos os módulos corretamente

Para isso você pode usar um script em Bash: check-config.sh

wget https://git.io/check-config.sh
chmod +x check-config.sh
sh check-config.sh

A saída será similar a isso: Chech config Docker módulos do Kernel

Caso existam módulos não habilitados(missing), verifique antes se a sua versão do Kernel possui esse nome de módulo, exemplo para o módulo CONFIG_EXT3_FS_XATTR:

grep 'CONFIG_EXT3_FS_XATTR' /usr/src/linux/.config 

Se não retornar saída é porque não tem, mas se retornar, copie o nome do módulo e pesquise em qualquer tela do menu do Kernel, pressionando a barra(/) abrirá um box para você inserir o nome que deseja pesquisar, basta colar o nome que você havia copiado e em seguida pressionar Enter, exemplo:

Pesquise o módulo: CONFIG_NETFILTER_XT_MATCH_IPVS search module kerne -Resultado com o caminho completo e todos os dados:

Symbol: NETFILTER_XT_MATCH_IPVS [=m]
Type  : tristate
Prompt: "ipvs" match support
  Location: 
    -> Networking support (NET [=y])
       -> Networking options
        -> Network packet filtering framework (Netfilter) (NETFILTER [=y])
          -> Core Netfilter Configuration
(1)         -> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=y])
  Defined at net/netfilter/Kconfig:1322
  Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && NETFILTER_XTABLES [=y] && IP_VS [=m] && NETFILTER_ADVANCED [=y] && NF_CONNTRACK [=y]

result module

A linha Prompt indica o nome que ele está no menu e em Location o caminho completo para encontrá-lo.

Nesse caso, está habilitado como módulo: [=m] , mas se estiver como is not set será necessário habilitar.

3. Compile o Kernel

make && make modules_install && make install

4. Instale e configure o Docker

emerge --ask --verbose app-emulation/docker

Adicione seu usuário ao grupo docker

usermod -aG docker <username>

Se quiser adicione o Docker para iniciar junto com o OpenRC

rc-update add docker default

Se não quiser que inicie junto com o sistema, para utilizar o Docker será sempre necessário iniciar manualmente: rc-service docker start . Se utilizar systemd rode: systemctl start docker.service.

Reinicie seu sistema para que alguns módulos sejam lidos na inicialização e a alteração de grupo do seu usuário tenham efeito: sudo reboot.

# Testando se está tudo certo
docker info

Assista a um vídeo sobre Docker

Links úteis:


docker gentoo gnulinux


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!