Spec-Zone.ru › MySQL 8.4

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

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

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

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

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

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

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

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

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

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

Загрузка образа сервера MySQL
Важно

Для пользователей MySQL Enterprise Edition: Для использования образов Docker для MySQL Enterprise Edition требуется подписка. Подписки работают по модели «Принесите свой лицензионный ключ»; см. Как приобрести продукты и услуги MySQL для получения подробной информации.

Загрузка образа сервера в отдельном шаге не является строго необходимой; однако выполнение этого шага перед созданием контейнера Docker гарантирует, что ваш локальный образ является актуальным. Чтобы загрузить образ MySQL Community Edition из Oracle Container Registry (OCR), выполните эту команду:

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

tag — метка версии образа, который вы хотите загрузить (например, 8.4 или 9.2 или latest). Если :tag опущена, используется метка latest, и загружается образ последней GA-версии (последней инновационной версии) MySQL Community Server.

Для загрузки образа MySQL Enterprise Edition из OCR, необходимо сначала принять лицензионное соглашение на OCR и войти в хранилище контейнеров с помощью вашего Docker-клиента. Выполните эти шаги:

  • Посетите OCR по адресу https://container-registry.oracle.com/ и выберите MySQL.

  • В списке репозиториев MySQL выберите enterprise-server.

  • Если вы еще не вошли в OCR, нажмите кнопку Войти справа на странице, а затем введите ваши учетные данные Oracle, когда вас попросят.

  • Следуйте инструкциям справа на странице для принятия лицензионного соглашения.

  • Войдите в OCR с помощью вашего контейнерного клиента, используя, например, команду 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

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

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

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

  • Введите «MySQL Server» в поле Продукт и желаемый номер версии в поле Версия.

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

    На рисунке показаны настройки поиска для образа MySQL Enterprise Edition для MySQL Server 8.0:

    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
container-registry.oracle.com/mysql/community-server   latest    1d9c2219ff69   2 months ago   496MB
Запуск экземпляра MySQL-сервера

Чтобы запустить новый контейнер Docker для MySQL-сервера, используйте следующую команду:

docker run --name=container_name  --restart on-failure -d image_name:tag 

image_name — имя образа, используемого для запуска контейнера; см. Загрузка образа сервера MySQL Docker для получения дополнительной информации.

Опция --name для задания пользовательского имени вашего контейнера сервера является необязательной; если имя контейнера не указано, оно генерируется случайным образом.

Опция --restart предназначена для настройки политики перезапуска вашего контейнера; она должна быть установлена в значение on-failure, чтобы включить поддержку перезапуска сервера в рамках сеанса клиента (что происходит, например, при выполнении команды RESTART клиентом или при настройке экземпляра InnoDB Cluster). С поддержкой перезапуска, выполнение команды RESTART в рамках сеанса клиента приведет к остановке и последующему перезапуску сервера и контейнера.

Например, для запуска нового контейнера Docker для MySQL Community Server используйте эту команду:

docker run --name=mysql1 --restart on-failure -d container-registry.oracle.com/mysql/community-server:latest 

Чтобы запустить новый Docker-контейнер для MySQL Enterprise Server с образом Docker, загруженным из OCR, используйте эту команду:

docker run --name=mysql1 --restart on-failure -d container-registry.oracle.com/mysql/enterprise-server:latest 

Чтобы запустить новый Docker-контейнер для MySQL Enterprise Server с образом Docker, загруженным с My Oracle Support, используйте эту команду:

docker run --name=mysql1 --restart on-failure -d mysql/enterprise-server:latest 

Если образ Docker с указанным именем и меткой не был загружен ранее командой docker pull или docker run, образ сейчас загружается. Начинается инициализация контейнера, и контейнер появляется в списке запущенных контейнеров при выполнении команды docker ps. Например:

$> docker ps
CONTAINER ID   IMAGE                                                         COMMAND                  CREATED          STATUS                    PORTS                       NAMES
4cd4129b3211   container-registry.oracle.com/mysql/community-server:latest   "/entrypoint.sh mysq…"   8 seconds ago    Up 7 seconds (health: starting)   3306/tcp, 33060-33061/tcp   mysql1

Инициализация контейнера может занять некоторое время. Когда сервер готов к использованию, STATUS контейнера в выводе команды 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-сервера, который вы только что запустили, и подключиться к MySQL-серверу. Используйте команду docker exec -it для запуска клиента mysql внутри Docker-контейнера, который вы запустили, например, следующим образом:

docker exec -it mysql1 mysql -uroot -p

При запросе введите сгенерированный пароль root (см. последний шаг в Запуск экземпляра 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, внимательно следуйте инструкциям в Главе 3, Обновление MySQL. Среди других инструкций, обсуждаемых там, особенно важно сделать резервную копию вашей базы данных перед обновлением.

  • Инструкции в этом разделе требуют, чтобы данные и конфигурация сервера были сохранены на хосте. Подробнее см. в Сохранение данных и конфигурации.

Выполните эти шаги для обновления Docker-инсталляции MySQL 8.4 до 9.2:

  • Остановите сервер MySQL 8.4 (имя контейнера — mysql84 в этом примере):

    docker stop mysql84
    
  • Скачайте Docker-образ MySQL 9.2 Server. См. инструкции в Загрузка Docker-образа MySQL-сервера. Убедитесь, что вы используете правильную метку для MySQL 9.2.

  • Запустите новый контейнер MySQL 9.2 Docker (названный mysql92 в этом примере) с предыдущими данными и конфигурацией сервера (с необходимыми изменениями, если нужно — см. Главу 3, Обновление MySQL), которые были сохранены на хосте (с помощью bind-mounting в этом примере). Для MySQL Community Server выполните эту команду:

    docker run --name=mysql84 \
       --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 container-registry.oracle.com/mysql/community-server:9.2

    При необходимости скорректируйте container-registry.oracle.com/mysql/community-server на правильное имя образа — например, замените его на container-registry.oracle.com/mysql/enterprise-server для образов MySQL Enterprise Edition, загруженных из OCR, или mysql/enterprise-server для образов MySQL Enterprise Edition, загруженных из My Oracle Support.

  • Дождитесь завершения запуска сервера. Вы можете проверить статус сервера, используя команду docker ps (см. Запуск экземпляра MySQL-сервера, чтобы узнать, как это сделать).

Следуйте тем же шагам для обновления в рамках серии 9.2 (то есть, от версии 9.2.x до 9.2.y): остановите исходный контейнер и запустите новый с более новой версией образа на старых данных и конфигурации сервера. Если вы использовали метку 9.2 или latest при запуске исходного контейнера, и теперь есть новая версия MySQL 9.2, до которой вы хотите обновиться, сначала необходимо загрузить образ для новой версии с помощью команды:

docker pull container-registry.oracle.com/mysql/community-server:9.2

Затем вы можете обновить, запустив новый контейнер с той же меткой на старых данных и конфигурации (скорректируйте имя образа, если вы используете MySQL Enterprise Edition; см. Загрузку Docker-образа MySQL-сервера):

docker run --name=mysql84new \
   --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 container-registry.oracle.com/mysql/community-server:9.2
Дополнительные темы по развертыванию MySQL-сервера с Docker

Дополнительные темы по развертыванию MySQL-сервера с Docker, такие как конфигурация сервера, сохранение данных и конфигурации, журнал ошибок сервера и переменные окружения контейнера, см. в Разделе 2.5.6.2, «Дополнительные темы по развертыванию MySQL-сервера с Docker».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/docker-mysql-getting-started.html

Spec-Zone.ru

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