Difference between revisions of "Docker"

From VeRLab Wiki
Jump to: navigation, search
(Problemas com a instalação na máquina)
Line 1: Line 1:
==Instalação==
+
== Docker Rootless Mode ==
  
'''Importante''': para estas configurações é necessário que a máquina tenha um docker instalado com versão >= 20.10
+
O modo disponível do Docker para os usuários da rede é o '''Docker Engine no modo Rootless''', ou seja, apenas a versão em linha de comando e no modo de acesso non-root.
  
Este processo ainda se encontra em uma fase experimental e não está disponível em todas as máquinas. As máquinas disponíveis com docker até o momento são '''PROC6''', '''PROC7''', '''EVA''' e '''DALEK'''.
+
Em geral, funciona para todas as aplicações e pode-se ler mais informações no [https://docs.docker.com/engine/security/rootless/ link Docker Rootless]
 +
<br><br>
 +
'''Importante''': para estas configurações é necessário que a máquina tenha um docker instalado com versão >= 20.10 (pode ser conferido com: <code>docker version</code>)
  
===Configuração inicial===
+
Este processo ainda se encontra em uma fase experimental e não está disponível em todas as máquinas. As máquinas disponíveis com docker até o momento são '''PROC1, PROC5, PROC6, PROC7''', '''EVA''' e '''DALEK'''.
Para utilizar docker em uma máquina no laboratório é preciso que o usuário:  
+
<br><br><br>
 +
== Configuração Docker rootless com Systemd ==
 +
 
 +
<br><br>
 +
A opção mais intuitiva para executar o Docker Rootless é gerenciando pelo '''systemctl'''.
 +
 
 +
Para utilizar docker rootless em uma máquina no laboratório é preciso que o usuário:  
  
 
* solicite à equipe de rede para criar uma pasta de rascunho no disco local como /draft-xxx/nome_do_usuario e dar permissão de leitura/escrita.
 
* solicite à equipe de rede para criar uma pasta de rascunho no disco local como /draft-xxx/nome_do_usuario e dar permissão de leitura/escrita.
 
* solicite à equipe de rede a instalação do docker na máquina.
 
* solicite à equipe de rede a instalação do docker na máquina.
 +
<br><br>
  
 
Feito estas etapas, para configurar o acesso na máquina é preciso seguir os seguintes passos para executar o docker rootless:
 
Feito estas etapas, para configurar o acesso na máquina é preciso seguir os seguintes passos para executar o docker rootless:
Line 17: Line 26:
  
 
<code>echo '{"data-root":"/<path-em-disco-local>/<user>/docker-cache"}' | tee ~/.config/docker/daemon.json</code>
 
<code>echo '{"data-root":"/<path-em-disco-local>/<user>/docker-cache"}' | tee ~/.config/docker/daemon.json</code>
 
+
<br><br>
 
'''Importante:''' Lembre-se de ajustar o <code><path-em-disco-local>/<user></code> para uma armazenamento de rascunho na máquina e alguma pasta do seu usuário (por exemplo, <code>/draft-hdd/fulano</code>).
 
'''Importante:''' Lembre-se de ajustar o <code><path-em-disco-local>/<user></code> para uma armazenamento de rascunho na máquina e alguma pasta do seu usuário (por exemplo, <code>/draft-hdd/fulano</code>).
 
+
<br><br>
 
Esses dois primeiros passos são específicos para as máquinas do VeRLab: por padrão o Docker guarda arquivos na /home do usuário, mas essa pasta é compartilhada em rede (por NFS ou MooseFS) e o Docker não dá suporte a isso.[https://github.com/docker/for-linux/issues/1172 Aqui está um issue citando o problema]
 
Esses dois primeiros passos são específicos para as máquinas do VeRLab: por padrão o Docker guarda arquivos na /home do usuário, mas essa pasta é compartilhada em rede (por NFS ou MooseFS) e o Docker não dá suporte a isso.[https://github.com/docker/for-linux/issues/1172 Aqui está um issue citando o problema]
  
 
# Execute <code>dockerd-rootless-setuptool.sh install</code>.
 
# Execute <code>dockerd-rootless-setuptool.sh install</code>.
Importante: Após terminar, o comando vai pedir que você altere seu .bashrc para adicionar uma linha semelhante a <code>export DOCKER_HOST=unix:///run/user/<uid>/docker.sock</code> (varia por usuário). Faça essa alteração antes de prosseguir copiando e colando o comando no terminal.
+
<br><br>
 +
'''Importante''': Após terminar, o comando vai pedir que você altere seu .bashrc para adicionar uma linha semelhante a <code>export DOCKER_HOST=unix:///run/user/<uid>/docker.sock</code> (varia por usuário). Faça essa alteração antes de prosseguir copiando e colando o comando no terminal.
 
# Reinicie o Bash com <code>exec bash</code>.
 
# Reinicie o Bash com <code>exec bash</code>.
# Ative a inicialização automática do Docker: <code>systemctl --user enable --now docker</code> ou manualmente: <code>systemctl --user start docker</code>
+
# Ative a inicialização automática do Docker em seu usuário: <code>systemctl --user enable --now docker</code> ou manualmente: <code>systemctl --user start docker</code>
  
Com isso, a configuração está pronta. Confirme que o Docker está funciona com <code>docker run hello-world</code> ou <code>docker version</code>.
+
 
 +
Com isso, a configuração está pronta.  
 +
 
 +
 
 +
Comandos para confirmar se o Docker está funcionando:
 +
* Verificar status do docker daemon:  <code>systemctl --user status docker.service</code>
 +
* Parar docker daemon:  <code>systemctl --user stop docker.service</code>
 +
* Verificar configurações do Docker Rootless: <code>docker version</code> ou <code>docker info</code>
 +
* Baixar uma imagem teste e executá-la: <code>docker run hello-world</code>
 +
<br><br><br>
  
 
== Problemas com a instalação na máquina ==
 
== Problemas com a instalação na máquina ==
 +
<br><br>
 
Caso mesmo após estes passos o docker apresente problemas, pode ser necessário realizar a configuração de modo a executar ele manualmente direcionando para a sua pasta na /draft-XXX. Para isso é preciso é preciso:
 
Caso mesmo após estes passos o docker apresente problemas, pode ser necessário realizar a configuração de modo a executar ele manualmente direcionando para a sua pasta na /draft-XXX. Para isso é preciso é preciso:
 +
<br><br>
 
# Criar uma pasta na /draft-XXX do usuário que será usada pelo runtime do dockerd-rootless, executando:<br>
 
# Criar uma pasta na /draft-XXX do usuário que será usada pelo runtime do dockerd-rootless, executando:<br>
 
<code>mkdir /draft-XXX/<user>/.docker</code><br>
 
<code>mkdir /draft-XXX/<user>/.docker</code><br>
 
<code>mkdir /draft-XXX/<user>/.docker/run</code>
 
<code>mkdir /draft-XXX/<user>/.docker/run</code>
 +
<br><br>
 
# Após isso é preciso criar as variaveis de ambiente no ~/.bashrc para XDG_RUNTIME_DIR e DOCKER_HOST.
 
# Após isso é preciso criar as variaveis de ambiente no ~/.bashrc para XDG_RUNTIME_DIR e DOCKER_HOST.
 
<code>export XDG_RUNTIME_DIR=/draft-XXX/<user>/.docker/run</code><br>
 
<code>export XDG_RUNTIME_DIR=/draft-XXX/<user>/.docker/run</code><br>
 
<code>export DOCKER_HOST=unix:///draft-XXX/<user>/.docker/run/docker.sock</code>
 
<code>export DOCKER_HOST=unix:///draft-XXX/<user>/.docker/run/docker.sock</code>
 
+
<br><br>
 
A partir deste ponto, enquanto quiser executar o docker, é preciso deixar uma janela excutando o bash script <code>dockerd-rootless.sh</code>. Para isso abra uma janela do tmux ou byobu, e execute:
 
A partir deste ponto, enquanto quiser executar o docker, é preciso deixar uma janela excutando o bash script <code>dockerd-rootless.sh</code>. Para isso abra uma janela do tmux ou byobu, e execute:
 
<code>bash dockerd-rootless.sh</code>
 
<code>bash dockerd-rootless.sh</code>
 
+
<br><br>
 
Em outro terminal, é possível verificar a instalação executando <code>docker run hello-world</code> ou <code>docker version</code>.
 
Em outro terminal, é possível verificar a instalação executando <code>docker run hello-world</code> ou <code>docker version</code>.

Revision as of 19:32, 22 August 2024

Docker Rootless Mode

O modo disponível do Docker para os usuários da rede é o Docker Engine no modo Rootless, ou seja, apenas a versão em linha de comando e no modo de acesso non-root.

Em geral, funciona para todas as aplicações e pode-se ler mais informações no link Docker Rootless

Importante: para estas configurações é necessário que a máquina tenha um docker instalado com versão >= 20.10 (pode ser conferido com: docker version)

Este processo ainda se encontra em uma fase experimental e não está disponível em todas as máquinas. As máquinas disponíveis com docker até o momento são PROC1, PROC5, PROC6, PROC7, EVA e DALEK.


Configuração Docker rootless com Systemd



A opção mais intuitiva para executar o Docker Rootless é gerenciando pelo systemctl.

Para utilizar docker rootless em uma máquina no laboratório é preciso que o usuário:

  • solicite à equipe de rede para criar uma pasta de rascunho no disco local como /draft-xxx/nome_do_usuario e dar permissão de leitura/escrita.
  • solicite à equipe de rede a instalação do docker na máquina.



Feito estas etapas, para configurar o acesso na máquina é preciso seguir os seguintes passos para executar o docker rootless:

  1. Crie a pasta ~/.config/docker com o comando mkdir -p ~/.config/docker.
  2. Altere a pasta de armazenamento dos arquivos de cache do Docker para a pasta de rascunho /draft-xxx com:

echo '{"data-root":"/<path-em-disco-local>/<user>/docker-cache"}' | tee ~/.config/docker/daemon.json

Importante: Lembre-se de ajustar o <path-em-disco-local>/<user> para uma armazenamento de rascunho na máquina e alguma pasta do seu usuário (por exemplo, /draft-hdd/fulano).

Esses dois primeiros passos são específicos para as máquinas do VeRLab: por padrão o Docker guarda arquivos na /home do usuário, mas essa pasta é compartilhada em rede (por NFS ou MooseFS) e o Docker não dá suporte a isso.Aqui está um issue citando o problema

  1. Execute dockerd-rootless-setuptool.sh install.



Importante: Após terminar, o comando vai pedir que você altere seu .bashrc para adicionar uma linha semelhante a export DOCKER_HOST=unix:///run/user/<uid>/docker.sock (varia por usuário). Faça essa alteração antes de prosseguir copiando e colando o comando no terminal.

  1. Reinicie o Bash com exec bash.
  2. Ative a inicialização automática do Docker em seu usuário: systemctl --user enable --now docker ou manualmente: systemctl --user start docker


Com isso, a configuração está pronta.


Comandos para confirmar se o Docker está funcionando:

  • Verificar status do docker daemon: systemctl --user status docker.service
  • Parar docker daemon: systemctl --user stop docker.service
  • Verificar configurações do Docker Rootless: docker version ou docker info
  • Baixar uma imagem teste e executá-la: docker run hello-world




Problemas com a instalação na máquina



Caso mesmo após estes passos o docker apresente problemas, pode ser necessário realizar a configuração de modo a executar ele manualmente direcionando para a sua pasta na /draft-XXX. Para isso é preciso é preciso:

  1. Criar uma pasta na /draft-XXX do usuário que será usada pelo runtime do dockerd-rootless, executando:

mkdir /draft-XXX/<user>/.docker
mkdir /draft-XXX/<user>/.docker/run

  1. Após isso é preciso criar as variaveis de ambiente no ~/.bashrc para XDG_RUNTIME_DIR e DOCKER_HOST.

export XDG_RUNTIME_DIR=/draft-XXX/<user>/.docker/run
export DOCKER_HOST=unix:///draft-XXX/<user>/.docker/run/docker.sock

A partir deste ponto, enquanto quiser executar o docker, é preciso deixar uma janela excutando o bash script dockerd-rootless.sh. Para isso abra uma janela do tmux ou byobu, e execute: bash dockerd-rootless.sh

Em outro terminal, é possível verificar a instalação executando docker run hello-world ou docker version.