2.5.6.1 Основные шаги по развертыванию MySQL-сервера с Docker
Образы MySQL Docker, поддерживаемые командой MySQL, разработаны специально для платформ Linux. Другие платформы не поддерживаются, и пользователи, использующие эти образы MySQL Docker на них, делают это на свой страх и риск. См. обсуждение здесь для ознакомления с известными ограничениями при запуске этих контейнеров на операционных системах, отличных от Linux.
Загрузка образа сервера 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). Если : опущена, используется метка taglatest, и загружается образ последней 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.comUsername:Password:Oracle-Account-IDLogin successful.password
Загрузите образ 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:
Нажмите кнопку и из списка результатов выберите желаемую версию, и нажмите кнопку .
В появившемся диалоговом окне Загрузка файла нажмите и загрузите файл
.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 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, внимательно следуйте инструкциям в Главе 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=mysql92 \ --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=mysql92new \
--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.