Я очень смущен тем, как docker-compose должен работать на моем Mac. Вот шаги, которые я предпринял:
1) Установлен Docker Toolbox (Docker версии 1.8.2)
2) Пытался запустить docker-compose up
но получил ошибку Illegal instruction: 4
согласно # 1885
3) Чтобы решить эту проблему, я установил docker-compose
с помощью pip через sudo pip install -U docker-compose
4) Теперь, когда я запускаю docker-compose up
я получаю Couldn't connect to Docker daemon - you might need to run
boot2docker up .
Это очень сбивает с толку, потому что во всей документации сказано, что boot2docker
устарел. И попытка установить boot2docker у меня тоже не работает.
Я не знаю, что еще попробовать. В настоящее время установлен docker-compose v1.4.2.
Недавно мы исправили это сообщение об ошибке (исправление будет в следующем выпуске).
В нем должно быть написано «вам может потребоваться запустить docker-machine start default
».
Если вы по-прежнему не можете подключиться, а docker-machine
работает, вы можете настроить compose для использования машины с eval "$(docker-machine env default)"
Хорошо спасибо. Похоже, моя проблема связана с виртуальной машиной Docker. Это дает мне всевозможные ошибки TLS даже при выполнении обычных команд докеров, таких как docker images
.
Get http:///var/run/docker.sock/v1.20/images/json: dial unix /var/run/docker.sock: no such file or directory.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
Я займусь этим с командой докеров.
ОБНОВИТЬ
Для тех, у кого также есть эта проблема. Решение для меня было:
Docker Quickstart Terminal
docker-machine restart default
eval $(docker-machine env default)
Очевидно, вам нужно запускать eval $(docker-machine env default)
каждый раз, когда вы запускаете терминал быстрого запуска.
Я получаю ту же ошибку, но я хочу использовать не машину по умолчанию, а другую машину, созданную с помощью драйвера amazonec2
, возможно ли это?
Да. Compose будет использовать любой движок, установленный в переменной окружения DOCKER_HOST
(это то, что устанавливается eval $(docker-machine env ....)
.
ах, спасибо, я не знал о DOCKER_HOST
!!
Почему бы не добавить параметр командной строки, который бы переопределил это значение ??
Я просто хотел бы добавить кое-что для всех, кто посетит это в будущем ... У меня эта проблема возникает каждый раз, когда я открываю новую оболочку, поэтому я добавил eval $(docker-machine env default)
в свой ~/.bash_profile
. Работает удовольствие. Конечно, кто-то здесь может сказать мне, что это очень плохая идея (TM): smile:
Да, это работает. Но почему внезапно eval $ (docker-machine env default). Раньше он работал нормально
Да, я тоже не уверен. Раньше у меня тоже работал.
eval $(docker-machine env default)
у меня работает! благодаря :)
Eval "$ (docker-machine env default)" сработал, спасибо!
Я все еще не совсем доволен решением добавления eval $(docker-machine env default)
к ~/.bash_profile
(хотя я предлагал это), поскольку он добавляет примерно 2-секундную задержку при открытии нового окна терминала. У кого-нибудь есть идеи получше?
@shankiesan alias eval_evil_docker="eval $(docker-machine env default)"
Ха, да, думаю, это сработает @michahell . Все равно придется что-то делать перед каждым использованием докера. Не идеально, но неплохо!
@shankiesan Единственный другой вариант, который я вижу, - это экспортировать переменные, созданные из docker-machine env default
в .bash_profile. Да, IP теоретически может измениться, но на самом деле это гораздо менее вероятно, чем ежедневная задержка открытия новой оболочки, и если это произойдет, вы всегда можете обновить :-)
Хорошая идея @lewistaylor . Я пробовал это, прежде чем это не сработало, но на этот раз у него есть, так что это, должно быть, ошибка оператора. Хороший, отличный совет: +1:
@shankiesan @lewistaylor вау, не могу понять, что это не я придумал. еще лучшее решение: +1:
эта проблема все еще сохраняется, единственное решение - использовать
$ eval $(docker-machine env the-vm-name) // which doesnt give any output & without it we get the error
$ docker-compose up
Иногда у меня такая же проблема, НО она возникает ТОЛЬКО, когда я закрываю свой macbook. Если я перезапущу систему, она может запуститься нормально, а может и нет. Если нет, я перезапускаю снова, и обычно он работает. Я предполагаю, что, вероятно, проблема в IP / портах, только догадываюсь, потому что, если я перезапускаю свой ноутбук с незакрытыми программами (например, PHPStorm), он обычно не работает. Если я закрою все запущенные программы и перезапущу, все заработает.
+1
@lewistaylor @shankiesan @michahell Как вы экспортируете переменные из docker-machine env default
в .bash_profile? Я не очень хорошо разбираюсь в bash, поэтому был бы признателен за помощь в реализации этого исправления.
Отбросьте docker-machine / dinghy / boot2docker и используйте docker для Mac, он установлен на
стать официальной средой выполнения
3 июня 2016 г. в 08:03 "nwshane" [email protected] написал:
@lewistaylor https://github.com/lewistaylor @shankiesan
https://github.com/shankiesan @michahell https://github.com/michahell
Как вы экспортируете переменные из docker-machine env default в
.bash_profile? Я не очень хорошо разбираюсь в bash, поэтому буду благодарен за помощь
внедрение этого исправления.-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/docker/compose/issues/2180#issuecomment -223505966,
или отключить поток
https://github.com/notifications/unsubscribe/AAeWNmFAR8k9Aszni-FDcGrkfK4dVEAeks5qH9GugaJpZM4GN-hv
.
@nwshane Просто отредактируйте .bash_profile
в своем любимом текстовом редакторе. Например:
nano ~/.bash_profile
и добавьте строки, полученные из docker-machine env default
. Затем вам нужно source
этот файл - вы можете сделать это, открыв и закрыв сеанс терминала, или, что еще лучше, source ~/.bash_profile
Это должно сработать.
@shankiesan Отлично, спасибо! Это сработало. Я сбивал себя с толку, думая, что мне нужно запустить docker-machine env default
и получить оттуда переменные - но, конечно, eval "$(docker-machine env default)"
делает именно это.
$ wordpress-compose eval $(docker-machine env wordpress)
$ wordpress-compose docker ps
КОНТЕЙНЕР ИДЕНТИФИКАЦИЯ ИЗОБРАЖЕНИЕ КОМАНДА СОЗДАНО СОСТОЯНИЕ ИМЕНА ПОРТОВ
443c7386f4ef wordpress "/entrypoint.sh apach" 7 минут назад Up 7 минут 0.0.0.0:80->80/tcp wordpress_app
a790fdc3ca70 mysql "docker-entrypoint.sh" 14 минут назад Up 14 минут 0.0.0.0:3360->3306/tcp wordpress_db
$ wordpress-compose docker-compose up
ОШИБКА: не удалось подключиться к демону Docker - вам может потребоваться запустить docker-machine start default
$ wordpress-compose docker-compose --version
docker-compose версия 1.8.0-rc1, сборка 9bf6bc6
$ wordpress-compose docker --version
Докер версии 1.12.0-rc2, сборка 906eacd, экспериментальная
Вот моя информация, все работает нормально, если я использую docker run .......mysql.....
и docker run ....link....wordpress
, и я могу получить доступ к блогу в браузере. Когда я хочу попробовать docker-compose
, это не сработает. Я удалил машину по умолчанию, теперь используется wordpress.
Может помочь мне узнать, что не так?
у меня такая же проблема
но я не использую docker-machine только для docker-compose
Есть идеи ??
eval "$(docker-machine env default)"
решает проблему
Была такая же проблема с одной конкретной службой в docker-compose.
Была проблема с разрешениями ... файлы для загрузки в докер не принадлежали текущему пользователю.
То же, что @Rots здесь = /
вставьте команду:
eval "$ (env docker-machine по умолчанию)"
на вашем терминале Mac
"Error checking TLS connection: machine does not exist"
Теперь эта проблема возникает всякий раз, когда я пытаюсь использовать docker-machine env default, также пробовал загрузиться из bash_profile, нужна помощь!
Ошибка SSL: EOF произошел с нарушением протокола (_ssl.c: 777)
Самый полезный комментарий
Недавно мы исправили это сообщение об ошибке (исправление будет в следующем выпуске).
В нем должно быть написано «вам может потребоваться запустить
docker-machine start default
».Если вы по-прежнему не можете подключиться, а
docker-machine
работает, вы можете настроить compose для использования машины сeval "$(docker-machine env default)"