5
respostas

[Erro no Build] docker: Error response from daemon

Olá, Durante a tentativa de acompanhamento vídeo 01(Preparação dos Ambientes) da Aula 03 (Ambiente de Produção e Desenvolvimento) o curso Jenkins e Docker:Pipeline de Entrega Contínua, usei o seguinte passo de Build do tipo shell no Jenkins:

#!/bin/sh

# Subindo o container de teste
docker run -d -p 82:8000 -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock -v /var/lib/jenkins/workspace/jenkins-todo-list-principal/to_do/.env:/usr/src/app/to_do/.env --name=todo-list-teste django_todolist_image_build

# Testando a imagem
docker exec -i todo-list-teste python manage.py test --keep
exit_code=$?

# Derrubando o container velho
docker rm -f todo-list-teste

if [ $exit_code -ne 0 ]; then
    exit 1
fi

Entretanto, recebi o seguinte erro:

[jenkins-todo-list-principal] $ /bin/sh -xe /tmp/jenkins3011159033148863232.sh
+ docker run -d -p 82:8000 -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock -v /var/lib/jenkins/workspace/jenkins-todo-list-principal/to_do/.env:/usr/src/app/to_do/.env --name=todo-list-teste django_todolist_image_build
cacc5dc33a384b9f4853c9586358d6e41cd0c6851a888631997afb38582bfdda
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/jenkins/workspace/jenkins-todo-list-principal/to_do/.env\\\" to rootfs \\\"/var/lib/docker/overlay2/94734d89218f643ccee8a9717289173d2c4f5b1adc7e990b895f5f1cb6509ae5/merged\\\" at \\\"/var/lib/docker/overlay2/94734d89218f643ccee8a9717289173d2c4f5b1adc7e990b895f5f1cb6509ae5/merged/usr/src/app/to_do/.env\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
Build step 'Execute shell' marked build as failure
Finished: FAILURE

Ressalto que estou usando o Docker Toolbox e o cmder no Windows e não estou certo se esse é o motivo para a inserção das contra-barras no fim da descrição dos caminhos absolutos. Caso seja essa a causa do problema alguém sabe como ignorar esse caractere?

Abraços.

5 respostas

Olá Jullyano, tudo bem? Sua dica falando que está usando o Docker Toolbox no Windows é de grande ajuda para tentarmos resolver o problema. O que penso é que o Docker Toolbox tem um problema quanto aos volumes no Windows, então em seus containers comuns os volumes estão funcionando corretamente? Outra coisa que preciso entender, nesse curso o instrutor utiliza o Vagrant e o Docker dentro dessa máquina Vagrant, então você está usando dessa mesma forma? Ou está fazendo com que o Jenkins use o Docker Toolbox que está diretamente na sua máquina física? Ou você está fazendo tudo diretamente no Windows mesmo?

Olá, Jonilson.

Os volumes em meus containers comuns estão funcionando corretamente. Estou seguindo os passos exatamente com o instrutor Rafael Zago: Vagrant e o Docker dentro da máquina Vagrant.

Diante desse cenário, você tem alguma pista relacionado ao relatado problema de gerenciamento de volumes pelo Docker Toolbox?

Fico no aguardo caso outra informação seja imprescindível. Estou pesquisando solitariamente, mas ainda não consegui encontrar a causa.

Abraços.

Entendi Jullyano! Mas se você está usando o Vagrant e o Docker dentro da máquina Vagrant, porque está utilizando o Docker Toolbox? Ainda fiquei com essa dúvida e talvez esse seja o problema, no Docker Toolbox é preciso fazer uma conversão de paths. Então poderia explicar melhor isso?

Olá, Jonilson,

minha infraestrutura é a seguinte: utilizo Windows 10 Pro como SO da minha estação e o Docker Toolbox para que o Vagrant crie a VM, conforme orientado no curso, e dentro dela crie as imagens e execute os containers. Ou seja, dentro da VM Vagrant uso apenas um outro Docker. Utilizo o Docker Toolbox por que não quis habilitar a virtualização com Hyper-V e nem o WSL em meu SO host.

Acredito que você tenha razão e que o caminho seja a de conversão de paths. Ontem, não pude debruçar-me sobre o problema e não sei como fazê-lo. Caso você possa me indicar um caminho, agradeceria. Enquanto isso, tentarei pesquisar mais um pouco hoje.

Agradeço.

Abraços.

Entendo Jullyano, mas nesse caso você está utilizando o VirtualBox correto? Outra coisa, você poderia tentar executar um container simples dentro da máquina virtual e falar pra gente se deu certo? E depois executar um container usando o volume e falar pra gente o resultado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software