2.5.7.1 Основные шаги по развертыванию MySQL-сервера с Docker
Образы MySQL Docker, поддерживаемые командой MySQL, разработаны специально для платформ Linux. Другие платформы не поддерживаются, и пользователи, использующие эти образы MySQL Docker на них, делают это на свой страх и риск. Обратитесь к данному обсуждению для ознакомления с известными ограничениями при запуске этих контейнеров на операционных системах, отличных от Linux.
Загрузка образа Docker MySQL-сервера
Для пользователей MySQL Enterprise Edition: Для использования образов Docker для MySQL Enterprise Edition требуется подписка. Подписки работают по модели «принесите свой лицензионный ключ»; подробности см. в разделе Как приобрести продукты и услуги MySQL.
Загрузка образа сервера в отдельном шаге не является строго необходимой; однако выполнение этого шага перед созданием контейнера Docker гарантирует, что ваш локальный образ будет актуальным. Чтобы загрузить образ MySQL Community Edition, выполните следующую команду:
docker pull mysql/mysql-server:tag tag — метка версии образа, которую вы хотите получить (например, 5.6, 5.7, 8.0 или latest). Если : опущено, используется метка taglatest, и загружается образ последней GA-версии MySQL Community Server. Обратитесь к списку меток доступных версий на странице mysql/mysql-server на Docker Hub.
Чтобы загрузить образ MySQL Community Edition из Oracle Container Registry (OCR), выполните следующую команду:
docker pull container-registry.oracle.com/mysql/mysql-server:tagЧтобы загрузить образ MySQL Enterprise Edition из OCR, необходимо сначала принять лицензионное соглашение на OCR и войти в хранилище контейнеров с помощью своего клиента Docker:
Посетите OCR по адресу https://container-registry.oracle.com/ и выберите MySQL.
Из списка репозиториев MySQL выберите
enterprise-server.Если вы еще не вошли в OCR, нажмите кнопку справа на странице, а затем введите свои учетные данные Oracle, когда вас попросят.
Следуйте инструкциям справа на странице, чтобы принять лицензионное соглашение.
-
Войдите в OCR с помощью своего клиента Docker (команда
docker) используя командуdocker login:#
docker login container-registry.oracle.comUsername:Password:Oracle-Account-IDLogin successful.password
Загрузите образ Docker для MySQL Enterprise Edition из OCR с помощью этой команды:
docker pull container-registry.oracle.com/mysql/enterprise-server:tag Существуют различные варианты для , соответствующие различным версиям образов MySQL Docker, предоставляемых OCR:tag
8.0,8.0.(xx— это последняя версия в серии 8.0),latest: MySQL 8.0, последняя GA-версия5.7,5.7.(yy— это последняя версия в серии 5.7): MySQL 5.7
Для загрузки образа MySQL Enterprise Edition посетите веб-сайт My Oracle Support, войдите в свою учетную запись Oracle и выполните следующие шаги, когда вы окажетесь на главной странице:
Выберите вкладку .
Перейдите к области Поиск обновлений и на вкладке Поиск переключитесь на подвкладку Продукт или семейство (расширенный).
Введите «MySQL Server» в поле и желаемую версию в поле .
-
Используйте раскрывающиеся списки для дополнительных фильтров, чтобы выбрать — и введите «Docker» в текстовом поле.
На следующем рисунке показаны параметры поиска для образа MySQL Enterprise Edition:
Нажмите кнопку и из списка результатов выберите нужную версию и нажмите кнопку .
В появившемся диалоговом окне Загрузка файла нажмите и загрузите файл
.zipдля образа Docker.
Разархивируйте загруженный архив .zip, чтобы получить внутри него tarball (mysql-enterprise-server-), а затем загрузите образ, выполнив следующую команду:version.tar
docker load -i mysql-enterprise-server-version.tarВы можете перечислить загруженные образы Docker с помощью этой команды:
$> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql/mysql-server latest 3157d7f55f8d 4 weeks ago 241MB
Запуск экземпляра MySQL-сервера
Чтобы запустить новый Docker-контейнер для MySQL-сервера, используйте следующую команду:
docker run --name=container_name -d image_name:tag Имя образа можно получить с помощью команды docker images, как описано в Загрузка образа Docker MySQL-сервера. Параметр --name, для задания пользовательского имени контейнера сервера, является необязательным; если имя контейнера не указано, оно генерируется случайным образом.
Например, чтобы запустить новый Docker-контейнер для MySQL Community Server, используйте следующую команду:
docker run --name=mysql1 -d mysql/mysql-server:5.7 Чтобы запустить новый Docker-контейнер для MySQL Enterprise Server с образом Docker, загруженным из OCR, используйте следующую команду:
docker run --name=mysql1 -d container-registry.oracle.com/mysql/enterprise-server:5.7 Чтобы запустить новый Docker-контейнер для MySQL Enterprise Server с образом Docker, загруженным с My Oracle Support, используйте следующую команду:
docker run --name=mysql1 -d mysql/enterprise-server:5.7 Если образ Docker с указанным именем и меткой не был загружен с помощью предыдущих команд docker pull или docker run, образ теперь загружается. Начинается инициализация контейнера, и контейнер появляется в списке запущенных контейнеров, когда вы выполните команду docker ps. Например:
$> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a24888f0d6f4 mysql/mysql-server "/entrypoint.sh my..." 14 seconds ago Up 13 seconds (health: starting) 3306/tcp, 33060/tcp mysql1
Инициализация контейнера может занять некоторое время. Когда сервер готов к использованию, состояние контейнера в выводе команды docker ps изменяется с (health: starting) на (healthy).
Параметр -d, используемый в команде docker run выше, заставляет контейнер работать в фоновом режиме. Используйте эту команду для мониторинга вывода из контейнера:
docker logs mysql1После завершения инициализации вывод команды будет содержать сгенерированный случайный пароль для пользователя root; проверьте пароль, например, с помощью этой команды:
$> docker logs mysql1 2>&1 | grep GENERATED
GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOsПодключение к MySQL-серверу изнутри контейнера
После того, как сервер готов, вы можете запустить клиент mysql внутри контейнера MySQL Server, который вы только что запустили, и подключиться к MySQL-серверу. Используйте команду docker exec -it для запуска клиента mysql внутри Docker-контейнера, который вы запустили, например, так:
docker exec -it mysql1 mysql -uroot -p При запросе введите сгенерированный корневой пароль (см. последний шаг в разделе «Запуск экземпляра сервера MySQL» выше, чтобы узнать, как найти пароль). Поскольку опция MYSQL_ONETIME_PASSWORD по умолчанию имеет значение true, после подключения клиента mysql к серверу, необходимо сбросить пароль root сервера, выполнив эту команду:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; Замените password выбранным паролем. После сброса пароля сервер готов к использованию.
Доступ к оболочке контейнера
Чтобы получить доступ к оболочке вашего контейнера сервера MySQL, используйте команду docker exec -it для запуска оболочки bash внутри контейнера:
$> docker exec -it mysql1 bash
bash-4.2#После этого вы сможете выполнять команды Linux внутри контейнера. Например, для просмотра содержимого каталога данных сервера внутри контейнера используйте следующую команду:
bash-4.2# ls /var/lib/mysql
auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql mysql.sock.lock private_key.pem server-cert.pem sys
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 mysql.sock performance_schema public_key.pem server-key.pem
Остановка и удаление контейнера MySQL
Чтобы остановить контейнер сервера MySQL, который мы создали, используйте следующую команду:
docker stop mysql1docker stop отправляет сигнал SIGTERM процессу mysqld, чтобы сервер завершил свою работу корректно.
Обратите также внимание, что при остановке основного процесса контейнера (mysqld в случае контейнера сервера MySQL) Docker контейнер останавливается автоматически.
Чтобы запустить контейнер сервера MySQL снова:
docker start mysql1Чтобы остановить и снова запустить контейнер сервера MySQL одной командой:
docker restart mysql1Чтобы удалить контейнер MySQL, сначала остановите его, а затем используйте команду docker rm:
docker stop mysql1docker rm mysql1 Если вы хотите, чтобы тома Docker для каталога данных сервера были удалены одновременно, добавьте опцию -v к команде docker rm.
Обновление контейнера сервера MySQL
Перед выполнением любого обновления MySQL внимательно следуйте инструкциям в разделе 2.10, «Обновление MySQL». Среди прочих инструкций, обсуждаемых там, особенно важно создать резервную копию вашей базы данных перед обновлением.
Инструкции в этом разделе требуют, чтобы данные и конфигурация сервера были сохранены на хосте. Подробности см. в разделе «Сохранение данных и конфигураций».
Следуйте этим шагам, чтобы обновить Docker установку MySQL 5.6 до 5.7:
-
Остановите сервер MySQL 5.6 (имя контейнера —
mysql56в этом примере):docker stop mysql56 Скачайте образ Docker сервера MySQL 5.7. См. инструкции в разделе «Загрузка образа Docker сервера MySQL»; убедитесь, что вы используете правильный тег для MySQL 5.7.
-
Запустите новый контейнер Docker сервера MySQL 5.7 (названный
mysql57в этом примере) с данными и конфигурацией старого сервера (с необходимыми изменениями, если необходимо — см. раздел 2.10, «Обновление MySQL»), которые были сохранены на хосте (при помощи bind-mounting в данном примере). Для MySQL Community Server выполните эту команду:docker run --name=mysql57 \ --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \ -d mysql/mysql-server:5.7При необходимости скорректируйте
mysql/mysql-serverдо корректного имени образа — например, замените его наcontainer-registry.oracle.com/mysql/enterprise-serverдля образов MySQL Enterprise Edition, загруженных из OCR, илиmysql/enterprise-serverдля образов MySQL Enterprise Edition, загруженных с My Oracle Support. Дождитесь завершения запуска сервера. Вы можете проверить статус сервера, используя команду docker ps (см. раздел «Запуск экземпляра сервера MySQL» для получения инструкций).
-
Запустите утилиту mysql_upgrade в контейнере сервера MySQL 5.7:
docker exec -it mysql57 mysql_upgrade -uroot -pПри запросе введите корневой пароль для вашего старого сервера MySQL 5.6.
-
Завершите обновление, перезапустив контейнер сервера MySQL 5.7:
docker restart mysql57
Дополнительные темы по развертыванию сервера MySQL с помощью Docker
Дополнительные темы по развертыванию сервера MySQL с помощью Docker, такие как конфигурация сервера, сохранение данных и конфигурации, журнал ошибок сервера и переменные окружения контейнера, см. в разделе 2.5.7.2, «Дополнительные темы по развертыванию сервера MySQL с помощью Docker».
© 2025 Oracle
Licensed under the GPLv2 License.