И если возможно, как бы вы настроили каждое местоположение графического демона, местоположение изображения и т. Д.?Можно ли запустить несколько докеров-демонами на том же компьютере
ответ
Да, вполне возможно запустить двух демонов Docker на одном хосте, даже без Docker Machine. По Докер 1.9.1, следующие docker daemon
флаги являются те, которые могут привести к конфликтам, если два демона используется по умолчанию:
-b, --bridge= Attach containers to a network bridge
--exec-root=/var/run/docker Root of the Docker execdriver
-g, --graph=/var/lib/docker Root of the Docker runtime
-H, --host=[] Daemon socket(s) to connect to
-p, --pidfile=/var/run/docker.pid Path to use for daemon PID file
по умолчанию для
--bridge
являетсяdocker0
, и если вы не используете default, вы должны создать и настроить мост вручную (Docker не будет создавать/управлять им для вас). Подробнее см. Ниже.--exec-root=/var/run/docker
где хранится состояние контейнера.--graph=/var/lib/docker
где хранятся изображения.--host=[]
указывает, где демон Docker будет слушать подключения клиентов. Если не указано, значение по умолчанию равно/var/run/docker.sock
.--pidfile=/var/run/docker.pid
где хранится идентификатор процесса демона.
Итак, до тех пор, пока ваши два демона используют разные значения для этих флагов, вы можете запускать их на одном хосте. Пример скрипта (включая настройки сети):
#!/bin/sh
## name: altdocker.sh
set -e -x
: ${bridge=altdocker}
: ${base=$HOME/$bridge}
# Set up bridge network:
if ! ip link show $bridge > /dev/null 2>&1
then
sudo brctl addbr $bridge
sudo ip addr add ${net:-"10.20.30.1/24"} dev $bridge
sudo ip link set dev $bridge up
fi
sudo docker daemon \
--bridge=$bridge \
--exec-root=$base.exec \
--graph=$base.graph \
--host=unix://$base.socket \
--pidfile=$base.pid
Пример использования:
## in one terminal
$ env net=10.9.8.7/24 /bin/sh altdocker.sh
# ... log output ...
## in another terminal
$ docker -H unix://$HOME/altdocker.socket run --rm -it alpine sh
/# echo hereiam
hereiam
Отличный вопрос! Внутри контейнера можно запустить демон Docker. В этом контейнере вы сможете запустить больше контейнеров. Таким образом, вы можете запускать докеры-демоны с разными настройками на одном и том же хост-компьютере.
Оформить заказ на этот проект: https://github.com/jpetazzo/dind. Он обеспечивает изображение Docker, которое содержит сам Docker, так же, как вам нужно.
Да, это выполнимо с помощью Docker Machine
С помощью этого вы можете создать несколько демонов Докер и переключаться между ними, как вы хотите.
Как именно вы бы идти об этом? Вам нужно будет создать виртуальную машину для каждого требуемого движка докеры, верно? – babbata
Это работает отлично. Однако ваша команда для тестирования установки не может работать так, как вы ее положили. 'docker -H unix: // $ HOME/altdocker --rm -it alpine sh' должен быть' docker -H unix: //$HOME/altdocker.socket run --rm -it alpine sh'. –
Спасибо @dynamic_cast. Извлечен из большого скрипта. Исправлен пример. – benizi