Мне интересно, можно ли создать виртуальный кластер с Docker, чтобы я мог запускать сценарии, разработанные для кластеров HPC, используя управление кластером SGE. Это довольно большие/сложные рабочие процессы, поэтому я не могу просто переписать их, скажем, для TORQUE/PBS. Теоретически я должен быть в состоянии обмануть Docker, заставив его думать, что существует несколько узлов, как в моем внутреннем кластере HPC. Если кто-то может избавить меня от боли, говоря мне, что это невозможно сделать, я был бы очень признателен.
Предупреждение: я не администратор кластера. Я больше конечный пользователь. Я работаю на своем Mac OSX 10.9.5.
Client version: 1.7.0 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 0baf609 OS/Arch (client): darwin/amd64 Server version: 1.7.0 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 0baf609 OS/Arch (server): linux/amd64 bash-3.2$ boot2docker version Boot2Docker-cli version: v1.7.0 Git commit: 7d89508
Я использовал производную от образа (Dockerfile
это здесь). Мои шаги довольно просты и следуйте инструкциям на веб-сайте:
- Создать образ
docker-machine create -d virtualbox local
- Сделайте его активным изображением
eval "$(docker-machine env local)"
- Получить изображение роя
docker run --rm swarm create
- Создать мастера роя
docker-machine create \ -d virtualbox \ --swarm \ --swarm-master \ --swarm-discovery token://$TOKEN \ swarm-master
- Используйте токен для создания узлов роя
docker-machine create \ -d virtualbox \ --swarm \ --swarm-discovery token://$TOKEN \ swarm-agent-00
- Добавить еще один узел
docker-machine create \ -d virtualbox \ --swarm \ --swarm-discovery token://$TOKEN \ swarm-agent-01
Теперь вот сумасшедшая часть. Когда я пытаюсь получить изображение с помощью этой команды: eval "$(docker-machine env --swarm swarm-master)"
я получаю эту глупую вещь Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
. Затем я попробовал eval $(docker-machine env swarm-master)
, и это сработало, но я не уверен на 100%, что это правильно:
NAME ACTIVE DRIVER STATE URL SWARM
local virtualbox Running tcp://192.168.99.105:2376
swarm-agent-00 virtualbox Running tcp://192.168.99.107:2376 swarm-master
swarm-agent-01 virtualbox Running tcp://192.168.99.108:2376 swarm-master
swarm-master * virtualbox Running tcp://192.168.99.106:2376 swarm-master (master)
- На данный момент я создаю свое многоконтейнерное приложение, используя этот файл yaml:
bior: image: stevenhart/bior_annotate command: login -f sgeadmin volumes: - .:/Data links: - sge sge: build: . ports: - "6444" - "6445" - "6446"
используя docker-compose up
- И затем, наконец, откройте новое изображение
docker run -it --rm dockersge_sge логин -f sgeadmin
Но вот проблема
когда я запускаю qhost
, я получаю следующее:
HOSTNAME ARCH NCPU NSOC NCOR NTHR LOAD MEMTOT MEMUSE SWAPTO SWAPUS ---------------------------------------------------------------------------------------------- global - - - - - - - - - - 6bf6f6fda409 lx-amd64 1 1 1 1 0.01 996.2M 96.2M 1.1G 0.0
Разве он не должен думать, что есть несколько процессоров, то есть каждый из моих узлов роя?