MySQL 團隊維護的 MySQL Docker 映像檔專為 Linux 平台建置。不支援其他平台,在這些平台上使用這些 MySQL Docker 映像檔的使用者將自行承擔風險。請參閱此處的討論,了解在非 Linux 作業系統上執行這些容器的一些已知限制。
下載 MySQL 伺服器 Docker 映像檔
MySQL 企業版使用者:需要訂閱才能使用 MySQL 企業版的 Docker 映像檔。訂閱採用「自帶授權」模式;詳情請參閱如何購買 MySQL 產品和服務。
在個別步驟中下載伺服器映像檔並非絕對必要;但是,在建立 Docker 容器之前執行此步驟可確保您的本機映像檔為最新版本。若要從Oracle 容器登錄 (OCR)下載 MySQL 社群版映像檔,請執行此命令
docker pull container-registry.oracle.com/mysql/community-server:tag
tag
是您要提取的映像檔版本標籤 (例如,8.4
、9.0
或 latest
)。如果省略 :
,則會使用 tag
latest
標籤,並且會下載 MySQL 社群伺服器最新 GA 版本 (即最新創新版本) 的映像檔。
若要從 OCR 下載 MySQL 企業版映像檔,您需要先在 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.
使用此命令從 OCR 下載 MySQL 企業版 Docker 映像檔
docker pull container-registry.oracle.com/mysql/enterprise-server:tag
若要從My Oracle Support 網站下載 MySQL 企業版映像檔,請前往該網站,登入您的 Oracle 帳戶,並在您進入登陸頁面後執行下列步驟
選取
索引標籤。前往修補程式搜尋區域,並在搜尋索引標籤上,切換至產品或系列 (進階)子索引標籤。
在「MySQL Server」,並在 欄位中輸入所需的版本號碼。
欄位中輸入使用其他篩選器的下拉式選單,選取「Docker」。
— ,並在文字欄位中輸入下圖顯示 MySQL Server 8.0 的 MySQL 企業版映像檔搜尋設定
按一下
按鈕,然後從結果清單中選取您要的版本,再按一下 按鈕。在出現的檔案下載對話方塊中,按一下並下載 Docker 映像檔的
.zip
檔案。
解壓縮下載的 .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 伺服器執行個體
若要啟動 MySQL 伺服器的新 Docker 容器,請使用下列命令
docker run --name=container_name --restart on-failure -d image_name:tag
image_name
是用來啟動容器的映像檔名稱;如需詳細資訊,請參閱下載 MySQL 伺服器 Docker 映像檔。
docker run --name=mysql1 --restart on-failure -d container-registry.oracle.com/mysql/community-server:latest
docker run --name=mysql1 --restart on-failure -d container-registry.oracle.com/mysql/enterprise-server:latest
docker run --name=mysql1 --restart on-failure -d mysql/enterprise-server:latest
$> 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
docker logs mysql1
$> docker logs mysql1 2>&1 | grep GENERATED
GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
docker exec -it mysql1 mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
$> docker exec -it mysql1 bash
bash-4.2#
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
docker stop mysql1
docker start mysql1
docker restart mysql1
docker stop mysql1
docker rm mysql1
docker stop mysql84
docker run --name=mysql90 \ --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.0
docker pull container-registry.oracle.com/mysql/community-server:9.0
docker run --name=mysql90new \
--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.0