欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker安裝mysql并實(shí)現(xiàn)數(shù)據(jù)卷掛載的示例代碼

 更新時(shí)間:2024年10月24日 09:36:48   作者:__imperfect__  
本文介紹了如何通過Docker安裝MySQL并實(shí)現(xiàn)了數(shù)據(jù)卷掛載,詳細(xì)說明了創(chuàng)建容器、配置掛載以及驗(yàn)證數(shù)據(jù)持久性的步驟,對(duì)于需要在Docker環(huán)境下部署MySQL的用戶非常有幫助

1.下載mysql的鏡像

我們先通過docker命令docker pull mysql:latest下載docker的鏡像

這里我們可以在mysql:后加上我們想要的版本,這里如果沒有指定版本將會(huì)下載最新的latest版本

2.數(shù)據(jù)卷掛載

在創(chuàng)建mysql容器之前,我們先了解一下什么時(shí)數(shù)據(jù)卷掛載:

首先,每當(dāng)我們創(chuàng)建一個(gè)容器,容器內(nèi)部的文件和宿主機(jī)文件是分離開的,這里會(huì)有兩個(gè)比較重要的問題:

  • 我們?nèi)绻苯硬僮鱩ysql容器中的文件會(huì)很麻煩,在容器中目錄層級(jí)可能會(huì)很復(fù)雜
  • 我們?nèi)绻獙?duì)mysql進(jìn)行升級(jí)或者其他操作,那么數(shù)據(jù)卷會(huì)隨之丟失,我們的數(shù)據(jù)庫中的數(shù)據(jù)也會(huì)隨之一起丟失

那么我們有什么方法去解決呢?當(dāng)然就是數(shù)據(jù)卷掛載,我們先創(chuàng)建一個(gè)mysql容器來體驗(yàn)一下什么是容器

docker run -d \
--name mysql-demo \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql?

我這里因?yàn)?306端口已經(jīng)有一個(gè)mysql容器,所以我用3307端口來演示

在這里插入圖片描述

下面逐條來解釋一下每一條命令的含義

# 創(chuàng)建并運(yùn)行一個(gè)容器,-d 是讓容器在后臺(tái)運(yùn)行 
docker run 

# 給容器起一個(gè)名字(mysql),必須唯一
--name mysql

# 設(shè)置端口映射 <宿主機(jī)端口>:<容器內(nèi)端口>
-p 3306:3306

# 設(shè)置環(huán)境變量
-e KEY=VALUE

# 指定運(yùn)行時(shí)的鏡像的名字,一般由兩部分組成:[repository]:[tag],其中repostory就是鏡像名,tag是鏡像的版本,沒有指定tag時(shí),默認(rèn)是latest,代表最新版本的鏡像
mysql

接下來可以通過docker ps來查看我們的已經(jīng)啟動(dòng)的容器

在這里插入圖片描述

通過docker inspect mysql-demo可以查看我們mysql-demo容器的詳細(xì)信息,我們這里找到Mounts這里,這里就是我們mysql-demo容器的詳細(xì)掛載信息。

在這里插入圖片描述

看到這里你可能會(huì)問,我還不會(huì)設(shè)置容器的數(shù)據(jù)卷掛載,為什么他這里直接自動(dòng)掛載了呢?

這是因?yàn)槲覀冊(cè)趧?chuàng)建容器的時(shí)候,docker會(huì)幫我們自動(dòng)生成一個(gè)匿名卷,然后和我們的mysql容器進(jìn)行掛載,我們可以docker volume ps通過查看所有的數(shù)據(jù)卷信息,對(duì)應(yīng)上圖發(fā)現(xiàn),這個(gè)就是我們對(duì)應(yīng)的數(shù)據(jù)卷,我們mysql容器的數(shù)據(jù)都會(huì)存放在這里。

在這里插入圖片描述

但是這名字也太長(zhǎng)了,我們后期也不好維護(hù),我們可以在創(chuàng)建容器的時(shí)候就指定數(shù)據(jù)卷的掛載
先將剛剛創(chuàng)建的mysql容器刪除docker rm -f mysql-demo

現(xiàn)在我們可以挑選一個(gè)地方來存儲(chǔ)我們的數(shù)據(jù)卷,我這里以/root目錄下來演示,先創(chuàng)建一個(gè)目錄,并進(jìn)入該目錄

mkdir mysql-demo

cd mysql-demo

創(chuàng)建conf、data、init目錄

mkdir conf
mkdir data
mkdir init

進(jìn)入conf目錄

cd conf

創(chuàng)建并編寫一個(gè).cnf配置文件,只要后綴是cnf即可,名字可以任意,我這里命名為custom.cnf

vi custom.cnf

編寫內(nèi)容如下,作用:在linux系統(tǒng)中查看數(shù)據(jù)庫內(nèi)容出現(xiàn)中文亂碼

[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

到這里我們可以直接來創(chuàng)建并運(yùn)行MySQL容器

docker run -d \
--name mysql-demo \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql-demo/data:/var/lib/mysql \
-v /root/mysql-demo/init:/docker-entrypoint-initdb.d \
-v /root/mysql-demo/conf:/etc/mysql/conf.d \
mysql

這次我們的命令和上面不同的是多出了三個(gè)-v 開頭的命令,這就是指定數(shù)據(jù)卷目錄掛載的命令

我們可以再次查看mysql容器的掛載信息

docker inspect mysql-demo

在這里插入圖片描述

到這里,我們就實(shí)現(xiàn)了數(shù)據(jù)卷的掛載,那么到底有什么用呢?

3.為什么要實(shí)現(xiàn)數(shù)據(jù)卷掛載?

實(shí)現(xiàn)數(shù)據(jù)卷掛載,只要我們每次創(chuàng)建容器掛載的是同一目錄,那么我們就可以將數(shù)據(jù)保留,不會(huì)造成數(shù)據(jù)的丟失我們可以先進(jìn)入mysql容器docker exec -it mysql-demo bash然后連接mysqlmysql -u root -p123接著我們可以創(chuàng)建一個(gè)數(shù)據(jù)庫create database mysql_test;查看當(dāng)前所有的數(shù)據(jù)庫show databases;

在這里插入圖片描述

我們退出mysqlexit再推出mysql容器exit刪除剛剛創(chuàng)建的mysql容器docker rm -f mysql-demo現(xiàn)在我們可以通過docker ps -a命令來查看當(dāng)前的所有容器,發(fā)現(xiàn)mysql-demo已經(jīng)被刪除,我們?cè)俅芜\(yùn)行上面的創(chuàng)建容器命令,這里我們可以給我們的容器改一個(gè)名稱

docker run -d \
--name mysql-demo2 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql-demo/data:/var/lib/mysql \
-v /root/mysql-demo/init:/docker-entrypoint-initdb.d \
-v /root/mysql-demo/conf:/etc/mysql/conf.d \
mysql

進(jìn)入mysql容器,發(fā)現(xiàn)我們之前創(chuàng)建的mysql_test表還在,相信你也對(duì)數(shù)據(jù)卷掛載有了一個(gè)清晰的認(rèn)識(shí)

在這里插入圖片描述

到此這篇關(guān)于docker安裝mysql并實(shí)現(xiàn)數(shù)據(jù)卷掛載的示例代碼的文章就介紹到這了,更多相關(guān)docker mysql數(shù)據(jù)卷掛載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Docker容器連接外部Mysql的幾種方案

    Docker容器連接外部Mysql的幾種方案

    這篇文章主要給大家介紹了關(guān)于Docker容器連接外部Mysql的幾種方案,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 使用遠(yuǎn)程Docker進(jìn)行集成測(cè)試的環(huán)境搭建過程

    使用遠(yuǎn)程Docker進(jìn)行集成測(cè)試的環(huán)境搭建過程

    使用docker可以幫助我們快速的搭建項(xiàng)目依賴環(huán)境,但是本地化的docker依賴,依然讓我們的代碼在測(cè)試時(shí),不夠純粹,對(duì)其各個(gè)運(yùn)行環(huán)境,都有本地docker安裝的要求
    2021-07-07
  • Docker容器依賴link連接按順序啟動(dòng)方式

    Docker容器依賴link連接按順序啟動(dòng)方式

    這篇文章主要介紹了Docker容器依賴link連接按順序啟動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Docker容器磁盤占滿的一些情況匯總

    Docker容器磁盤占滿的一些情況匯總

    這篇文章主要給大家介紹了關(guān)于Docker容器磁盤占滿的一些情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 如何通過Dockerfile 創(chuàng)建 kali-novnc

    如何通過Dockerfile 創(chuàng)建 kali-novnc

    這篇文章主要介紹了如何通過Dockerfile 創(chuàng)建 kali-novnc,在Dockerfile所在目錄運(yùn)行相關(guān)命令操作即可完成,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • CentOS8下的Docker使用詳解

    CentOS8下的Docker使用詳解

    這篇文章主要介紹了CentOS8下的Docker使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 教你使用Portainer管理多臺(tái)Docker容器環(huán)境的方法

    教你使用Portainer管理多臺(tái)Docker容器環(huán)境的方法

    這篇文章主要介紹了Portainer管理多臺(tái)Docker容器環(huán)境,本文給大家介紹的非常詳細(xì),包括環(huán)境準(zhǔn)備及管理docker的詳細(xì)過程,需要的朋友可以參考下
    2021-11-11
  • CentOS7 安裝docker 解決啟動(dòng)不了的問題

    CentOS7 安裝docker 解決啟動(dòng)不了的問題

    這篇文章主要介紹了CentOS7 安裝docker 解決啟動(dòng)不了的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Docker如何批量刪除images

    Docker如何批量刪除images

    這篇文章主要介紹了Docker如何批量刪除images問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker多平臺(tái)安裝與配置指南的實(shí)現(xiàn)

    Docker多平臺(tái)安裝與配置指南的實(shí)現(xiàn)

    這篇文章主要介紹了Docker多平臺(tái)安裝與配置指南的實(shí)現(xiàn),深入研究了Docker在Linux、Windows、和macOS等不同平臺(tái)上的安裝過程及Docker鏡像管理、容器運(yùn)維、使用Docker Compose進(jìn)行多容器管理,以及網(wǎng)絡(luò)與數(shù)據(jù)管理等,感興趣的可以了解一下
    2024-01-01

最新評(píng)論