更新時間:2021-12-24 10:33:31 來源:動力節點 瀏覽1507次
現在以搭建 mysql 為例
首先從 hub.docker.com 網站中搜索你需要的鏡像, 如 mysql
其中第一個帶有 official 單詞的表明為 Dcoker 官方提供的鏡像, 下面的三個為個人 / 組織上傳的鏡像
我們點擊右側 DETAILS 按鈕查看鏡像詳情
圖中的 8.0.1 至 5.5.55 四行表示支持的 mysql 版本, 同時附帶鏡像構建的 Dockerfile 文件
右側的 docker pull mysql 是鏡像的下載命令, 此時我們可以在命令行中執行該命令進行下載, 默認下載版本為 latest
如果希望指定下載版本, 使用如下命令格式 docker pull mysql:版本號, 如 docker pull mysql:5.6
下載 mysql 鏡像
$ docker pull mysql:5.7
運行 mysql 鏡像
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
此時會在命令行中輸出該容器運行時的日志, 若要退出, 請按 Ctrl+c
如果希望在后臺運行, 加入 -d 參數即可
運行參數說明
--name mysql #鏡像運行的容器名稱為 mysql
--rm #容器退出后刪除該容器
-p 3306:3306 #將本機的 3306 端口映射到該容器的 3306 端口
-e MYSQL_ROOT_PASSWORD=root #為容器配置一個名為 MYSQL_ROOT_PASSWORD, 值為 root 的環境變量, 因 mysql 容器的特殊性, 必須配置該環境變量
-d #在后臺運行該容器
在后臺運行 mysql 容器
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
查看當前運行容器列表
$ docker ps
我們可以發現 mysql 已在后臺運行
此時我們可以使用 Navicat,SQLyog 進行鏈接測試
ip: 運行容器機器的 ip
端口:3306
用戶名:root
密碼:root, 即 MYSQL_ROOT_PASSWORD 對應的值
亦可使用如下命令進入 mysql 命令行
$ docker run -it --link mysql:mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
運行參數說明
-it #運行容器后進入一個交互式的終端
--link mysql:mysql #鏈接一個名稱為 mysql 的容器, 并為該容器配置一個名為 mysql 的 hosts
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' #為運行容器后執行的命令, 其中諸如 $MYSQL_PORT_3306_TCP_ADDR,$MYSQL_PORT_3306_TCP_PORT 環境變量是容器根據 --link mysql:mysql 自動生成
mysql 鏡像默認使用的配置文件為 /etc/mysql/my.cnf
如果我們需要自定義配置文件可以使用如下命令覆蓋原本配置
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/docker/data/mysql/my.cnf:/etc/mysql/my.cnf mysql:5.7
運行參數說明
-v ~/docker/data/mysql/my.cnf:/etc/mysql/my.cnf #使用當前機器下的 ~/docker/data/mysql/my.cnf 文件掛載為容器中的 /etc/mysql/my.cnf 文件
在 mysql 鏡像中默認存儲目錄為 /var/lib/mysql, 這樣存在容器刪除后數據丟失的問題
為了防止這一情況產生, 我們需要將外部文件夾掛載到容器的 /var/lib/mysql 中
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/docker/data/mysql/datadir:/var/lib/mysql mysql:5.7
此時我們查看 ~/docker/data/mysql/datadir 文件夾
ll -h ~/docker/data/mysql/datadir
發現已經在該文件夾內生成了一些 mysql 的初始化文件。如果大家想了解更多相關知識,可以來關注一下動力節點的Docker菜鳥教程,里面的內容細致全面通俗易懂,適合小白學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習