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.
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
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
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
-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]
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.
make && make modules_install && make install
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