web-dev-qa-db-fra.com

Comment installer docker dans un conteneur docker?

C'est mon Dockerfile:

FROM golang
# RUN cat /etc/*release
RUN apt-get update
RUN apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository "deb [Arch=AMD64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

RUN apt-get update
RUN apt-get -y install docker-ce
RUN docker run hello-world

Le golang Dockerfile est officiel, il repose sur le 

Debian GNU/Linux 8 (jessie)

J'ai donc écrit ce fichier Docker en vérifiant les étapes d'installation depuis Docker Install Tutor (Debian)

Mais la sortie est 

Step 8/8 : RUN docker run hello-world
 ---> Running in b183b8cc5d10
docker: Cannot connect to the Docker daemon at 
unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

Comment résoudre ce problème? Je souhaite établir des conteneurs Docker dans le conteneur Docker hôte.

7
Jolly23

Utilisez Docker-in-Docker pour cette tâche. Ils ont déjà résolu beaucoup de problèmes pour vous.

1
Hendrikvh

Le moyen le plus simple est d'utiliser les images officielles de Docker-in-Docker de https://hub.docker.com/_/docker/ avec la balise :dind (qui est le successeur du projet Hendrikvh déjà mentionné).

Vous devez absolument utiliser le drapeau --priviledged également:

docker run --privileged --name yourDockerContainerNameHere -d docker:dind

Avec cela, vos expériences Docker-in-Docker devraient fonctionner - mais soyez conscient des nombreux blocages qui pourraient vous gêner: https://jpetazzo.github.io/2015/09/03/do-not-use- docker-in-docker-for-ci/

0
jonashackt

Essayez de démarrer le service Docker avant d’exécuter une commande Docker . Ajouter cette ligne 

RUN bash service docker start

à votre fichier Docker ci-dessus de cette ligne:

RUN docker run hello-world 
0
D. Villegas

J'ai eu un problème similaire en essayant d'installer Docker dans une image du serveur Bamboo. Pour résoudre ceci:

  1. commencez par supprimer la ligne: RUN docker run hello-world à partir de votre Dockerfile
  2. Le moyen le plus simple consiste simplement à exposer le socket Docker, en le fixant avec le drapeau -v ou en montant un volume à l'aide de Docker Compose:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

0
Felipe Desiderati