docker:安裝mysql以及最佳實踐

文章目錄

    • 1、拉取鏡像
    • 2、運行容器
    • 3、進入容器
      • 方式一
      • 方式二
      • 方式三
      • 容器進入后連接mysql和在宿主機連接mysql的區別
    • 持久化數據
    • 持久化數據最佳實踐

1、拉取鏡像

docker pull mysql

2、運行容器

docker run -d -p 3307:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 mysql

-p 3307:3306:將主機的3307端口映射到容器的3306端口,因為我主機還有一個 mysql 使用了 3306。
-d:后臺運行
--name mysql-container:給容器起一個名字叫 mysql-container
-e MYSQL_ROOT_PASSWORD=123456: 設置 MySQL 的 root 用戶密碼
mysql:latest: 使用 MySQL 鏡像,并指定使用最新版本。你也可以指定特定版本號,例如 mysql:8.0。

執行后會生成一串 hash,也就是這個容器的 id,然后我們使用 docker ps 查看所有容器的運行狀況
在這里插入圖片描述

3、進入容器

方式一

docker exec -it mysql-container /bin/bash
mysql -u root -p

在這里插入圖片描述

-it 是 Docker 命令中用于設置交互式終端的參數。具體含義如下:
-i: 表示保持標準輸入打開,即允許你通過鍵盤輸入。
-t: 表示分配一個偽終端(pseudo-TTY),即為容器分配一個偽終端設備。

方式二

你也可以直接運行命令

docker exec -it mysql-container mysql -uroot -p

在這里插入圖片描述
退出一般使用 exit 或者 quit

方式三

直接在客戶端遠程連接,這里注意要指定端口號為 3307

mysql -h 127.0.0.1 -P 3307 -u root -p

在這里插入圖片描述
直接用一些客戶端工具,注意這里的端口號填寫剛剛設置的端口號

在這里插入圖片描述

容器進入后連接mysql和在宿主機連接mysql的區別

可以看到,方式一和方式二是進入容器后才連接的mysql,方式三是在宿主機連接的 mysql,那么有什么不同嗎?

容器環境隔離:

進入容器并在容器內運行 MySQL 客戶端命令可以讓你直接與容器內的 MySQL 服務進行交互。這有助于在容器環境中調試和執行數據庫相關操作。

數據卷掛載:

如果容器內使用了數據卷掛載(Volume Mounting),即容器內的 MySQL 數據存儲在宿主機上的某個目錄,你可能需要進入容器來查看或操作這些數據。

容器內環境:

有時容器內可能配置有一些特定的環境或工具,進入容器可以方便你直接使用這些環境。

執行其他容器內操作:

進入容器還允許你執行其他容器內的操作,例如查看容器內部的文件結構、執行腳本等。

然而,在一些簡單的情況下,直接在宿主機上使用 MySQL 客戶端連接容器內的 MySQL 服務也是可行的。這通常適用于只需要執行一些簡單的查詢或操作而不涉及到容器內部的詳細環境時。

持久化數據

我們修改一下運行容器的命令,添加 -v 參數

docker run -d -p 3307:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 -v /Users/zhangyu/web/web-all/mysql-all/docker-sourcedata:/var/lib/mysql mysql

-v /Users/zhangyu/web/web-all/mysql-all/docker-sourcedata:/var/lib/mysql:使用數據卷將 MySQL 數據目錄 (/var/lib/mysql) 映射到宿主機的一個路徑 (/Users/zhangyu/web/web-all/mysql-all/docker-sourcedata)。這樣做可以使 MySQL 數據持久化,即使容器停止和刪除后,數據仍然保存在宿主機上。
在這里插入圖片描述
可以看到我運行完之后,立馬就有初始化的數據了,而且我刪除這個容器后數據依然存在宿主機目錄

但是這樣做,如果我已經啟動了一個容器,數據庫也使用了,那么我必須刪除掉這個容器才能重新啟動和這個一樣的,因為在 Docker 中,一旦容器啟動,通常來說,其文件系統和數據是在容器內部的。有一個比較好的實踐是這樣的

持久化數據最佳實踐

1、創建一個數據卷容器:

docker run --name mysql-data-container -v /path/to/mysql/data:/var/lib/mysql busybox

這個命令創建了一個名為 mysql-data-container 的容器,并將宿主機上的 /path/to/mysql/data 目錄掛載到容器內的 /var/lib/mysql。這樣,mysql-data-container 將成為一個專門用于持久化 MySQL 數據的數據卷容器。

2、創建一個 MySQL 容器并掛載數據卷:

docker run --name mysql-container --volumes-from mysql-data-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest

這個命令啟動了一個名為 mysql-container 的 MySQL 容器,并使用了 --volumes-from 參數,將 mysql-data-container 的數據卷掛載到了 MySQL 容器中。

–volumes-from:用于將容器的卷掛載到另一個容器的參數。
語法:docker run --volumes-from <source_container> ...

這種方法允許你在容器已經啟動的情況下為其添加數據卷。請注意,在 Docker 中,一旦容器啟動后,其文件系統通常是不可更改的,因此通過這種方式掛載數據卷是一種常見的實踐。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211669.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Botton進一步了解(點擊事件)

點擊事件和長按事件 監聽器&#xff1a;專門監聽控件的動作行為。只有控件發生了指定的動作&#xff0c;監聽器才會觸發開關區執行對應的代碼邏輯。按鈕控件有兩種常用的監聽器&#xff1a; 點擊監聽器&#xff1a;通過setOnClickListener方法設置。按鈕被按住少于500ms時會觸…

2023濟南大學acm新生賽題解

通過答題情況的難度系數&#xff1a; 簽到&#xff1a;ACI 銅牌題&#xff1a;BG 銀牌題&#xff1a;EF 金牌題&#xff1a;DHJKO 賽中暫未有人通過&#xff1a;LMNP A - AB Problem 直接根據公式計算就行。 #include<stdio.h> int main(){int a,b;scanf("%…

安卓MediaRecorder(2)錄制源碼分析

文章目錄 前言JAVA new MediaRecorder() 源碼分析android_media_MediaRecorder.cpp native_init()MediaRecorder.java postEventFromNativeandroid_media_MediaRecorder.cpp native_setup() MediaRecorder 參數設置MediaRecorder.prepare 分析MediaRecorder.start 分析MediaRec…

當前 .NET SDK 不支持面向 .NET X.0 (如8.0)問題的解決方案

如果您加載方案或運行時出現如下錯誤時&#xff1a; 當前 .NET SDK 不支持面向 .NET 8.0。請面向 .NET 7.0 或更低版本&#xff0c;或者使用支持 .NET 8.0 的 .NET SDK 版本。從 https://aka.ms/dotnet/download 下載 .NET SDK (項目名稱).Domain C:\Program Files\dotnet\…

Windows在cmd中執行bat腳本

在Linux中執行腳本常用的是sh或者直接輸入腳本名稱即可。 sh shell腳本.sh # 或者 shell腳本.sh在Windows中類似&#xff0c;使用start或者直接輸入腳本名稱。 start bat腳本.bat :: 或者 bat腳本.bat

【Angular開發】Angular在2023年之前不是很好

做一個簡單介紹&#xff0c;年近48 &#xff0c;有20多年IT工作經歷&#xff0c;目前在一家500強做企業架構&#xff0e;因為工作需要&#xff0c;另外也因為興趣涉獵比較廣&#xff0c;為了自己學習建立了三個博客&#xff0c;分別是【全球IT瞭望】&#xff0c;【架構師酒館】…

SSL證書更新

首先&#xff0c;我們需要理解為什么需要更新SSL證書。SSL證書的有效期通常為一年。一旦證書過期&#xff0c;瀏覽器會顯示警告&#xff0c;提示用戶該網站的SSL證書已經過期&#xff0c;這可能會導致用戶對網站的信任度下降&#xff0c;甚至直接離開網站。此外&#xff0c;一些…

【Python】手把手教你用tkinter設計圖書管理登錄UI界面(一)

下一篇&#xff1a; 本項目將分段設計“圖書管理登錄UI界面”的用戶登錄、用戶注冊、用戶賬號找回等。主要圍繞GUI標準庫tkinter、以及類的繼承&#xff08;重點&#xff09;來設計本項目。 首先新建一個文件夾命名為“圖書管理系統項目”&#xff0c;并在其目錄下新建文件夾…

【分治】最接近點對Python實現

文章目錄 [toc]問題描述一維最接近點對算法Python實現 二維最接近點對算法分治算法時間復雜性Python實現 問題描述 給定平面上 n n n個點&#xff0c;找其中的一對點&#xff0c;使得在 n n n個點組成的所有點對中&#xff0c;該點對的距離最小 一維最接近點對算法 Python實…

LED透鏡粘接UV膠是一種特殊的UV固化膠,用于固定和粘合LED透鏡。

LED透鏡粘接UV膠是一種特殊的UV固化膠&#xff0c;用于固定和粘合LED透鏡。 它具有以下特點&#xff1a; 1. 高透明度&#xff1a;LED透鏡粘接UV膠具有高透明度&#xff0c;可以確保光線的透過性&#xff0c;不影響LED的亮度和效果。 2. 快速固化&#xff1a;經過UV紫外線照射…

CPU、MCU、MPU、DSP、FPGA各是什么?有什么區別?

1、CPU 中央處理器&#xff0c;簡稱 CPU&#xff08;Central Processing Unit&#xff09;&#xff0c;中央處理器主要包括兩個部分&#xff0c;即控制器、運算器&#xff0c;其中還包括高速緩沖存儲器及實現它們之間聯系的數據、控制的總線。 電子計算機三大核心部件就是CPU…

力扣257. 二叉樹的所有路徑(遞歸回溯與迭代)

題目&#xff1a; 給你一個二叉樹的根節點 root &#xff0c;按 任意順序 &#xff0c;返回所有從根節點到葉子節點的路徑。 葉子節點 是指沒有子節點的節點。 示例 1&#xff1a; 輸入&#xff1a;root [1,2,3,null,5] 輸出&#xff1a;["1->2->5","…

[隴劍杯 2021]簡單日志分析

[隴劍杯 2021]簡單日志分析 題目做法及思路解析&#xff08;個人分享&#xff09; 問一&#xff1a;某應用程序被攻擊&#xff0c;請分析日志后作答&#xff1a; 黑客攻擊的參數是______。&#xff08;如有字母請全部使用小寫&#xff09;。 題目思路&#xff1a; 分析…

C++牛客知識點2

提示&#xff1a;接上文 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 例如&#xff1a;隨著人工智能的不斷發展&#xff0c;機器學習這門技術也越來越重要&#xff0…

http與https的區別,以及生產環境配置https的幾種方式

http HTTP(超文本傳輸協議)是一種用于傳輸和處理超文本文檔的協議。HTTP使用客戶端-服務器模型。客戶端通過HTTP請求協議向服務器發送請求&#xff0c;服務器則使用HTTP響應協議返回響應。HTTP協議通常使用TCP/IP作為底層傳輸協議&#xff0c;但它也可以使用其他傳輸協議。 H…

sql注入學習

基礎查詢語句&#xff1a; 給指定字段添加數據 insert into 表名(字段名1,字段名2,.....) values(值1,值2,......); 給全部字段添加數據 insert into 表名 values (值1,值2,.....);--無限制條件的修改,會修改整張表 update 表名 set 字段 值; --有限制條件的修改,只修改特定記…

軟件設計師——計算機網絡(二)

&#x1f4d1;前言 本文主要是【計算機網絡】——軟件設計師——計算機網絡的文章&#xff0c;如果有什么需要改進的地方還請大佬指出?? &#x1f3ac;作者簡介&#xff1a;大家好&#xff0c;我是聽風與他&#x1f947; ??博客首頁&#xff1a;CSDN主頁聽風與他 &#x1…

Promise介紹和使用

Promise Promise是一門新的技術&#xff08;ES6規范&#xff09;&#xff0c;JS中進行異步編程的新解決方案。&#xff08;舊的方案是使用回調函數&#xff0c;比如AJAX請求&#xff09;。 從語法上來說Promise是一個構造函數。 從功能上來說Promise對象用來封裝一個異步操作并…

生成式AI賦能千行百業加速創新,2023亞馬遜云科技re:Invent行業盤點

2023亞馬遜云科技re:Invent全球大會已于上周圓滿閉幕&#xff0c;在本次大會中&#xff0c;亞馬遜云科技又為大家帶來了很多功能/項目迭代更新&#xff0c;也重磅發布了很多全新的功能。今天從行業視角來盤點回顧哪些重磅發布適用于垂直行業客戶&#xff0c;以及面向汽車、制造…

ChatGLM3-6B和langchain阿里云部署

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、ChatGLM3-6B部署搭建環境部署GLM3 二、Chatglm2-6blangchain部署三、Tips四、總結 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; …