Spec-Zone.ru › MySQL 5.7

2.5.7.1 Основные шаги по развертыванию MySQL-сервера с Docker

Предупреждение

Образы MySQL Docker, поддерживаемые командой MySQL, разработаны специально для платформ Linux. Другие платформы не поддерживаются, и пользователи, использующие эти образы MySQL Docker на них, делают это на свой страх и риск. Обратитесь к данному обсуждению для ознакомления с известными ограничениями при запуске этих контейнеров на операционных системах, отличных от Linux.

  • Загрузка образа Docker MySQL-сервера

  • Запуск экземпляра MySQL-сервера

  • Подключение к MySQL-серверу изнутри контейнера

  • Доступ к оболочке контейнера

  • Остановка и удаление контейнера MySQL

  • Обновление контейнера MySQL-сервера

  • Дополнительные темы по развертыванию MySQL-сервера с Docker

Загрузка образа 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). Если :tag опущено, используется метка latest, и загружается образ последней 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.com 
    Username: Oracle-Account-ID
    Password: password
    Login successful.

Загрузите образ Docker для MySQL Enterprise Edition из OCR с помощью этой команды:

docker pull  container-registry.oracle.com/mysql/enterprise-server:tag

Существуют различные варианты для tag, соответствующие различным версиям образов MySQL Docker, предоставляемых OCR:

  • 8.0, 8.0.x (x — это последняя версия в серии 8.0), latest: MySQL 8.0, последняя GA-версия

  • 5.7, 5.7.y (y — это последняя версия в серии 5.7): MySQL 5.7

Для загрузки образа MySQL Enterprise Edition посетите веб-сайт My Oracle Support, войдите в свою учетную запись Oracle и выполните следующие шаги, когда вы окажетесь на главной странице:

  • Выберите вкладку Обновления и исправления.

  • Перейдите к области Поиск обновлений и на вкладке Поиск переключитесь на подвкладку Продукт или семейство (расширенный).

  • Введите «MySQL Server» в поле Продукт и желаемую версию в поле Релиз.

  • Используйте раскрывающиеся списки для дополнительных фильтров, чтобы выбрать Описание—содержит и введите «Docker» в текстовом поле.

    На следующем рисунке показаны параметры поиска для образа MySQL Enterprise Edition:

    Diagram showing search settings for MySQL Enterprise image
  • Нажмите кнопку Поиск и из списка результатов выберите нужную версию и нажмите кнопку Скачать.

  • В появившемся диалоговом окне Загрузка файла нажмите и загрузите файл .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 mysql1

docker stop отправляет сигнал SIGTERM процессу mysqld, чтобы сервер завершил свою работу корректно.

Обратите также внимание, что при остановке основного процесса контейнера (mysqld в случае контейнера сервера MySQL) Docker контейнер останавливается автоматически.

Чтобы запустить контейнер сервера MySQL снова:

docker start mysql1

Чтобы остановить и снова запустить контейнер сервера MySQL одной командой:

docker restart mysql1

Чтобы удалить контейнер MySQL, сначала остановите его, а затем используйте команду docker rm:

docker stop mysql1
docker 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/docker-mysql-getting-started.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API