Итак, моя конечная цель - запустить контейнер MySQL Docker (например, tutum/mysql из общего реестра), а затем связать контейнер Gitlab Docker (например, sameersbn/gitlab), где оба контейнера используют постоянное хранилище.
Однако я застрял в части MySQL. Каждый раз, когда я пытаюсь запустить предварительно созданный контейнер Docker MySQL (mysql, tutum/mysql и sameersbn/mysql), как описано ниже, я получаю следующий результат.
Шаги
Это только один из способов получить сообщение об ошибке ниже.
Вывод:
root @1bbeb34f3491:/# mysqld
140730 4:49:04 [Warning] Использование уникального префикса опции key_buffer вместо key_buffer_size устарело и будет удалено в будущей версии. Вместо этого используйте полное имя.
140730 4:49:04 [Warning] Использование уникального опционного префикса myisam-recover вместо myisam-recover-options устарело и будет удалено в будущей версии. Вместо этого используйте полное имя.
140730 4:49:04 [Примечание] Плагин 'FEDERATED' отключен.
mysqld: таблица mysql.plugin не существует
140730 4:49:04 [ERROR] Не удается открыть таблицу mysql.plugin. Запустите mysql_upgrade, чтобы создать его.
140730 4:49:04 InnoDB: куча памяти InnoDB отключена
140730 4:49:04 InnoDB: Мьютексы и rw_locks используют атомные встроенные ядра GCC
140730 4:49:04 InnoDB: сжатые таблицы используют zlib 1.2.8
140730 4:49:04 InnoDB: использование автономного AIO для Linux
140730 4:49:04 InnoDB: инициализация пула буферов, размер = 128.0M
140730 4:49:04 InnoDB: завершена инициализация пула буферов
140730 4:49:04 InnoDB: максимальный поддерживаемый формат файла - Barracuda.
140730 4:49:04 InnoDB: Ожидание запуска фоновых потоков
140730 4:49:05 InnoDB: 5.5.37 запущен; порядковый номер журнала 1595675
140730 4:49:05 [Примечание] Имя хоста сервера (адрес привязки): '0.0.0.0'; порт: 3306
140730 4:49:05 [Примечание] - '0.0.0.0' разрешается до '0.0.0.0';
140730 4:49:05 [Примечание] Сетью сервера, созданной по IP: '0.0.0.0'.
140730 4:49:05 [ОШИБКА] Не удается запустить сервер: привязать к unix-сокету: запрещено разрешение
140730 4:49:05 [ERROR] У вас уже есть другой сервер mysqld, запущенный в сокете:/var/run/mysqld/mysqld.sock?
140730 4:49:05 [ОШИБКА] Отмена
140730 4:49:05 InnoDB: запуск выключения... 140730 4:49:06 InnoDB: завершение работы завершено; порядковый номер журнала 1595675 140730 4:49:06 [примечание] mysqld: завершение завершено
Устранение ошибок
root @1bbeb34f3491:/# mysql_upgrade
Ищем 'mysql' как: mysql
Ищем "mysqlcheck" как: mysqlcheck
FATAL ERROR: Ошибка обновления
Независимо от того, какой контейнер MySQL я пытаюсь, со временем, когда я запустил MySQL, появилось то же сообщение об ошибке. Это почти наверняка означает, что с моей настройкой что-то не так, что меня смущает, потому что я думал, что контейнер Docker, без открытых портов или постоянного хранилища, будет изолирован от системы Docker установлен на?
Я также попытался запустить контейнер MySQL с флагом -d, а затем связался с ним новым контейнером ubuntu 14.04 (docker.io run -it -link mysql: mysql ubuntu: 14.04 bash). На контейнере Ubuntu я установил mysql-client через apt-get и попытался подключиться к контейнеру MySQL по ip-адресу в MYSQL_PORT_3306_TCP_ADDR, но это тоже не сработает.
В равной степени проблема может заключаться в том, что я не понимаю, как работает Docker. Если это так, может кто-то создать набор шагов, который использует один из контейнеров MySQL в индексе Docker, а затем связать контейнер с ним, который может подключиться. Это также поможет выяснить, что-то не так с моей установкой Docker (или какой-либо другой неизвестной проблемой, которая вызывает эту проблему).
Моя хост-система работает под управлением Ubuntu 14.04, а Docker был установлен через apt-get и имеет версию 0.9.1.
Я не совсем понял, что сказать в этом объяснении, потому что проблема кажется мне довольно странной. Если есть что-то, что я пропустил, спросите, и я добавлю его для вас.
Спасибо, JamesStewy
Это работает для меня:
docker run -d -p 3306:3306 -e MYSQL_PASS="mypass" tutum/mysql
Не нужно запускать script из bash, не нужно ничего умного.