докер в докер, публикуване на http грешка

Опитвам се да стартирам докер в докер. Единствената цел е експериментална, в никакъв случай не се опитвам да внедря нещо функционално, просто искам да проверя как работи докерът, когато се стартира от друг докер.

Стартирам docker чрез boot2docker на моя mac и след това завъртам просто изображение на ubuntu.

$ docker run -t -i ubuntu /bin/bash

След това продължавам и инсталирам докер, както и питон.

root@aa9263c874e4: apt-get update
root@aa9263c874e4: apt-get install -y docker.io python2.7 

Той може да се свърже с интернет, защото изпълнява този apt-get. След това получавам следната грешка, когато се опитвам да стартирам докер екземпляр от докер:

root@aa9263c874e4: sudo docker run -t -i ubuntu /bin/bash
2015/01/09 08:59:09 Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: no such file or directory

Някаква идея какво съм пропуснал? Изглежда странно, че получавам грешка при публикуване, защото изглежда, че може да се свърже с интернет чрез apt-get преди.


person cantdutchthis    schedule 09.01.2015    source източник
comment
За съжаление не е толкова просто. Основното нещо е, че трябва да стартирате докер с --privileged флаг, но мисля, че има няколко други проблеми. Най-добре е да опитате това: github.com/jpetazzo/dind   -  person Adrian Mouat    schedule 09.01.2015
comment
И тази грешка при публикуване няма нищо общо с интернет, опитва се да говори с докер сокета.   -  person Adrian Mouat    schedule 09.01.2015


Отговори (1)


Отговорих на подобен въпрос преди на как да стартирате Docker контейнер в Docker.

Изпълнението на докер вътре в докер определено е възможно. Основното нещо е да run външния контейнер с допълнителни привилегии (започващи с --privileged=true) и след това инсталирайте докер в този контейнер.

Вижте тази публикация в блога за повече информация: Docker-in - Докер.

Отличен случай на използване за това е описан в този запис. Блогът описва как да изграждате докер контейнери в рамките на докер контейнер на Jenkins.

Така че, аз вярвам, че вашият POST проблем няма нищо общо със свързването към интернет, тъй като контейнерът се опитва да говори с докер сокета. За да разрешите проблема, просто добавете флага --privileged=true към външния контейнер, когато го стартирате, по следния начин:

docker run --privileged=true ...
person wassgren    schedule 09.01.2015
comment
не работи за всички контейнери, но този фрагмент с този контейнер свърши работа: docker run -t -i --privileged jpetazzo/dind - person cantdutchthis; 10.01.2015