文章編號:11392時間:2024-09-30人氣:
Docker 是一個開源平臺,用于開發、交付和運行應用程序。它允許您在容器中部署應用程序,這些容器是獨立的執行環境。這可以幫助您輕松地創建和管理應用程序,而無需擔心底層基礎設施。本文將指導您下載 MySQL Docker 鏡像并使用 Docker 容器部署 MySQL。
從 Docker Hub 下載 MySQL Docker 鏡像。Docker Hub 是一個中心倉庫,其中包含用于 Docker 的應用程序和服務映像。要下載 MySQL 鏡像,請使用以下命令:
docker pull mysql/mysql-server
下載鏡像后,您可以創建和運行一個 MySQL 容器。要創建容器,請使用以下命令:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql/mysql-server
容器運行后,您可以使用以下命令連接到它:
docker exec -it some
當嘗試連接MySQL 8.x時,可能會遇到The server requested authentication method unknown to the client的錯誤。 這通常是由于MySQL 8.x升級后采用了新的密碼驗證方式caching_sha2_password,而您的PHP版本(假設在7.2以上)并不支持這種新方式。
解決此問題的步驟如下:
在部署 Docker 容器中的 MySQL 5.7 時,遵循以下步驟可以確保穩定和兼容性。 首先,從網易加速源拉取 MySQL 鏡像,采用以下命令:bashdocker pull /google_containers/mysql-5_7:5.7.24接下來,重命名鏡像:bashdocker rename mysql-5_7:5.7.24 mysql5_7創建容器并安裝鏡像:bashdocker run --name mysql-main -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password mysql5_7啟動容器:bashdocker start mysql-main通過命令進入 MySQL 容器:bashdocker exec -it mysql-main bash在容器中,登錄 MySQL:bashmysql -uroot -pyour_password設置遠程授權,例如添加允許遠程訪問的規則:sqlGRANT ALL PRIVILEGES ON *.* TO user@% IDENTIFIED BY password;FLUSH PRIVILEGES;保存并退出 MySQL:bashexit為了解決 MySQL 查詢大小寫的問題,編輯容器內的配置文件:bashvi /etc/mysql/.d/在 `[mysqld]` 部分添加:inilower_case_table_names=1保存并退出編輯器。 重啟 MySQL 容器:bashsudo docker restart mysql-main解決 MySQL 5.7 的查詢兼容問題,這通常與版本特定的特性或修復有關,可能需要根據實際情況調整 MySQL 配置或升級容器鏡像。 處理密碼修改不兼容的問題,可能涉及配置文件的修改,確保與新版本的 MySQL 兼容。 啟動 Docker 中的 MySQL 時,可以通過添加參數來定制容器的行為,例如:bashdocker run -d --name mysql-instance --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my_root_password mysql:5.7此參數 `-d` 表示后臺運行,`--restart=always` 確保容器在意外終止后自動重啟,`-p 3306:3306` 映射本地端口 3306 到容器的 3306 端口,`-e` 設置環境變量以配置 MySQL。 通過遵循上述步驟,可以確保在 Docker 中高效部署 MySQL 5.7,同時解決常見兼容性和配置問題。
為了部署Nacos并解決與容器中MySQL連接不上問題,需要遵循以下步驟和環境準備。 首先,確保已安裝Docker。 若遇到下載卡頓,可嘗試使用git下載或直接從GitHub頁面下載zip壓縮包。 解壓后,文件列表包括基本組件。 接著,安裝MySQL。 通過下載安裝包并執行相應腳本新建數據庫nacos,執行文件。 推薦使用Navicat進行操作。 打開并編輯文件,刪除版本號后使用最新版本,并移除所有mysql節點內容以自定義MySQL配置。 解決連接問題前,需查看MySQL的IP地址及網絡配置。 注意IPAddress和NetworkID。 若MySQL處于bridge網絡,需在中添加networks配置。 確認配置文件env/位置,并進行相應修改以適配網絡環境。 所有配置完成后,啟動Nacos服務,驗證服務是否成功運行。
推薦使用Dockerfile方式。
服務的管理使用的是supervisord, 因為dockerfile里只會有一個cmd生效,如果我想通過ssh去管理容器還要有mysql服務的啟動起來 cmd的方式就無法實現,當然容器不需要以sshd的方式去管理,這些也都是看自己怎么去使用,比如說我想備份容器里的數據 我完全可以使用 –volumes-from <容器name> , 重啟使用 docker restart <容器id>, 我個人也是使用ssh習慣了 所以依賴的鏡像把ssh服務栽進去了。
# docker 版本:復制代碼代碼如下:[root@private_network mysql]# docker versionClient version: 1.6.0-rc5Client API version: 1.18Go version (client): go1.4.2Git commit (client): fc4825dOS/Arch (client): linux/amd64Server version: 1.6.0-rc5Server API version: 1.18Go version (server): go1.4.2Git commit (server): fc4825dOS/Arch (server): linux/amd64[/code]# 目錄結構復制代碼代碼如下:mysql/|-- |-- create_mysql_ # mysql用戶初始化腳本|-- Dockerfile|-- install_ # mysql服務安裝腳本|-- # mysql服務配置文件|-- `-- # 服務管理工具配置文件# Dockerfile復制代碼代碼如下:# FROM: 依賴的鏡像FROM ted1993/mysql:5.6.24#MAINTAINER: 個人信息MAINTAINER xuqiangqiang # RUN: 執行命令RUN yum -y install tar gcc-c++ supervisor ncurses-devel libtool bison bison-devel pwgenRUN mkdir -p /var/log/supervisor# ADD: 添加本地文件到容器中,如果是壓縮包會在目標目錄進行自動解壓,如果只想添加文件可以使用 COPY命令ADD ./ /etc/ ./ /root/tools/ADD ./ /root/tools/ADD ./install_ /root/tools/ADD ./create_mysql_ /create_mysql_# WORKDIR: 當前的工作目錄WORKDIR /root/tools/RUN sh install_ ./ /data/server/mysql-5.6.24/etc/ rm -rf /root/tools/mysql-5.6.24RUN rm -rf /root/tools/ rm -rf /root/tools/cmake-3.2.2RUN rm -rf /root/tools/# EXPOSE: 公開的端口,會暴露在外的端口EXPOSE 22 3306# CMD: 容器啟動執行的命令 一個dockerfile只有一個cmd生效。
CMD [/usr/bin/supervisord]# 服務管理工具通過supervisord管理服務復制代碼代碼如下:[supervisord]nodaemon=true[program:mysqld]command=/etc/init.d/mysqld startnumprocs=1autostart=trueautorestart=true[program:sshd]command=/usr/sbin/sshd -Dnumprocs=1autostart=trueautorestart=true# install_復制代碼代碼如下:#!/bin/bashgrep ^mysql: /etc/passwd &> /dev/null || groupadd mysql && useradd -g mysql -s /sbin/nologin mysqlif [ ! -d cmake-3.2.2 ];thentar xzvf cmake-3.2.2./bootstrap && gmake && gmake install && cd [ ! -d mysql-5.6.24 ];thentar xzf mysql-5.6.24cmake \-DCMAKE_INSTALL_PREFIX=/data/server/mysql-5.6.24 \-DMYSQL_UNIX_ADDR=/tmp/ \-DMYSQL_DATADIR=/data/mysql-5.6.24/ \-DSYSCONFDIR=/data/server/mysql-5.6.24/etc/ \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DWITH_PERFSchema_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_EXTRA_CHARSETS=complex \-DENABLED_LOCAL_INFILE=1 \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_unicode_ci \-DWITH_DEBUG=0CPU_NUM=$(cat /proc/cpuinfo | grep processor | wc -l)if [ $CPU_NUM -gt 1 ];thenmake -j$CPU_NUMelsemakefimake installecho PATH=\$PATH:/data/server/mysql/bin >> /etc/profile && . /etc/profileln -s /data/server/mysql-5.6.24/ /data/server/mysqlrm -rf /etc/ -p /data/server/mysql-5.6.24/etc/mkdir -p /data/server/mysql/data/mkdir -p /data/log/mysql/chown -R mysql:mysql /data/server/mysql/chown -R mysql:mysql /data/server/mysql/data/chown -R mysql:mysql /data/log/mysql\cp -f /data/server/mysql/support-files/ /etc/init.d/mysqldsed -i s#^basedir=$#basedir=/data/server/mysql# /etc/init.d/mysqldsed -i s#^datadir=$#datadir=/data/server/mysql/data# /etc/init.d/mysqldchmod 755 /etc/init.d/mysqld/data/server/mysql/scripts/mysql_install_db --datadir=/data/server/mysql/data/ --basedir=/data/server/mysql --user=mysql# create_mysql_復制代碼代碼如下:#!/bin/bash/data/server/mysql/bin/mysqld_safe >> /dev/null 2>&1 &RET=1while [[ RET -ne 0 ]]; doecho => Waiting for confirmation of MySQL service startupsleep 5/data/server/mysql/bin/mysql -uroot -e status > /dev/null 2>&1RET=$?doneecho ============================MYSQL_PASS_INFO=============================== echo PASS_ROOT=${MYSQL_PASS:-$(pwgen -s 8 1)}PASS_DBA=${MYSQL_PASS:-$(pwgen -s 8 1)}echo echo => Creating MySQL root user with ${PASS_ROOT} passwordecho => Creating MySQL dba user with ${PASS_DBA} passwordecho /data/server/mysql/bin/mysql -uroot -e grant all privileges on *.* to dba@% identified by ${PASS_DBA};/data/server/mysql/bin/mysql -uroot -e update set password=PASSWORD(${PASS_ROOT}) where user=root and host=localhost;echo echo ===================================END=====================================echo echo => Done!echo echo echo ==============================REMOTE_MYSQL_PASSWORD=====================echo You can now connect to this MySQL Server using:echo echo mysql -udba -p${PASS_DBA} -h
大家好,本文將為您詳細介紹如何使用 Docker 安裝并運行 MySQL。 在開始之前,確保您已了解 Docker 的基本概念,包括鏡像、容器和數據卷。 鏡像是安裝包,容器是通過鏡像安裝的虛擬環境,數據卷則用于存儲容器內的數據。 首先,請確保已安裝并啟動 Docker。 推薦使用支持可視化的桌面端。 接下來,執行 Docker 命令以安裝 MySQL。 若本地無相應鏡像,Docker 將自動下載。 執行命令后,容器實例將基于鏡像啟動。 請查閱官方文檔獲取更多關于 Docker run 命令的說明。 對于使用 ARM 架構計算機的用戶,若遇到不兼容問題,可以使用 --platform 選項指定平臺類型,以找到兼容的鏡像。 在容器列表中,您將看到名為 app-mysql 的容器已成功啟動。 接下來,通過映射的端口連接 MySQL 客戶端。 MySQL 客戶端需自行安裝,命令行工具或可視化工具均可。 macOS 用戶推薦使用 Sequel Ace。 為了持久化數據,需將容器內的數據存儲到宿主環境的文件系統。 通過 -v 選項實現文件系統映射。 例如,將容器中的 /var/lib/mysql 目錄映射至名為 app-mysql 的數據卷。 此外,您還可以指定宿主環境的絕對路徑,數據將保存在此路徑下,但不會出現在數據卷列表中。 若需查看 Docker 支持的 MySQL 版本,可訪問 Docker 官方頁面并搜索 MySQL。 如無法找到所需版本,可能需自行構建鏡像。 至此,MySQL 已成功安裝并運行于 Docker 容器中。
內容聲明:
1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違法信息,如您發現違法內容,請聯系我們進行舉報處理!
4、本文地址:http://m.sycxjdsbhs.com/article/0ce5830890e26d5827c4.html,復制請保留版權鏈接!
代碼user,允許用戶手動旋轉屏幕,說明該選項允許用戶手動旋轉屏幕方向,如果未指定該選項,則屏幕方向將由設備自動確定,示例<,bodyuser=yes>,<,body>,...。
本站公告 2024-09-25 20:08:42
簡介winexec函數是一個WindowsAPI函數,用于在當前進程中啟動一個外部應用程序,它是一種強大的工具,可以實現各種自動化任務,例如打開文件、運行腳本和啟動其他應用程序,語法c,intwinexec,constcharcommand,intnShowCmd,`command`,要啟動的命令行字符串,`nShowCmd`,指...。
技術教程 2024-09-24 05:19:07
引言MVC,模型,視圖,控制器,模式是一種設計模式,用于構建可維護和可重用的代碼,它將應用程序分解為三個主要組件,模型、視圖和控制器,這種分離使得不同領域的開發人員可以同時處理代碼的不同方面,從而提高了團隊協作的效率,MVC模式的組件模型模型表示應用程序的數據和業務邏輯,它負責管理應用程序的狀態,以及處理與外部系統,如數據庫,的交互,...。
互聯網資訊 2024-09-16 17:11:34
CSS,層疊樣式表,是一種強大而靈活的語言,可讓您控制網頁的外觀和功能,通過使用CSS,您可以更改字體、顏色、布局,甚至添加交互效果,有時您可能希望禁用某些CSS規則,例如,您可能希望在打印頁面時禁用特定的顏色或字體,要禁用CSS規則,您可以使用`disabled`屬性,該屬性接受一個布爾值,當`disabled`屬性設置為`true...。
本站公告 2024-09-16 04:54:46
引言單選按鈕是一種常用的用戶界面元素,用于在有限的一組選項中進行單一選擇,在某些情況下,單選按鈕可能不是最合適的解決方案,尤其是當需要更加靈活或用戶友好的選項時,本文將探討單選按鈕的各種替代品,并討論每種替代品的優點和缺點,替代品多選按鈕多選按鈕與單選按鈕類似,但允許用戶選擇多項選項,這對于允許用戶從多個選項中進行選擇的情況非常有用,...。
本站公告 2024-09-14 17:52:12
<,涉及以下步驟,創建`SessionFactory`和`Session`對象,用于與數據庫建立連接,使用`Session`對象進行CRUD操作,例如保存、更新、刪除和查詢實體,關閉`Session`和`SessionFactory`對象,以釋放資源,SessionFactorysessionFactory=newConfigur...。
技術教程 2024-09-13 19:58:51
Java虛擬機,JVM,是Java應用程序運行的基礎,它在應用程序的性能、可靠性和安全性方面發揮著至關重要的作用,通過實施最佳實踐,您可以優化JVM的配置,從而顯著提高應用程序的效率和可靠性,1.調整堆大小JVM堆是存儲應用程序對象的內存區域,調整堆大小是優化JVM性能的關鍵,如果堆太大,則會導致頻繁的垃圾回收,從而降低應用程序的性能...。
互聯網資訊 2024-09-12 19:48:25
階乘函數,表示為n,,定義為從1到n的所有正整數的乘積,它在數學和科學的各個領域都有廣泛的應用,從基礎物理學到復雜的生物過程,物理學統計力學,階乘函數用于計算微觀狀態的數量,這些狀態具有相同的宏觀特性,例如,它用于計算給定體積和溫度條件下的氣體分子的微觀分布,量子力學,階乘函數用于計算波函數在勢壘上的反射和透射系數,這對于理解量子隧穿...。
互聯網資訊 2024-09-11 10:54:34
在當今數字時代,創建和維護一個充滿活力的在線社區至關重要,網站留言板是一個強大的工具,可以促進成員之間的討論、合作和協作,網站留言板的好處網站留言板提供了多種好處,包括,促進討論,留言板為成員提供了一個平臺,讓他們以一種結構化和有意義的方式進行交流,建立社區感,通過促進成員之間的互動,留言板有助于建立一種社區意識和歸屬感,收集反饋,留...。
技術教程 2024-09-09 20:32:15
MATLAB函數是可重用的代碼塊,用于執行特定任務,它們可以極大地提高腳本的可讀性和可維護性,本文將指導您掌握MATLAB函數定義的藝術,以創建易于閱讀和重用的代碼,最佳實踐使用描述性函數名稱,函數名稱應清晰地指示其目的,避免使用通用或模糊的術語,添加文檔字符串,在函數開頭添加一個文檔字符串,提供函數用法、輸入,輸出參數和其他相關信息...。
最新資訊 2024-09-08 23:39:51
降低風險是至關重要的,因為它可以幫助您保護自己、您的家人和您的財務狀況,您可以采取許多步驟來降低風險,包括,購買保險投資于安全可靠的投資建立一個應急基金制定并遵循預算避免不必要的債務定期檢查您的財務狀況購買保險購買保險是降低風險最重要的措施之一,保險可以幫助您在發生意外或不幸事件時保護自己財務狀況,有許多不同類型的保險可用,因此了解您...。
互聯網資訊 2024-09-08 06:01:49
概述Node.js是一種基于ChromeV8JavaScript引擎構建的開源JavaScript運行時環境,它使開發者能夠在服務器端使用JavaScript編寫應用程序,從而簡化了Web應用程序的開發,Node.js安裝后,提供了命令行界面,CLI,,可用于管理代碼、運行腳本和與其他工具進行交互,本文將指導您使用Node.jsCLI...。
最新資訊 2024-09-05 16:08:37