MySQL的Docker容器化使用筆記

2021-10-04 12:50:07 字數 1874 閱讀 8420

mysql利用docker做容器化,無論是測試還是生產,還是建議配置檔案和資料儲存掛載在宿主機。這樣既可以確保配置的靈活性,又可以確保資料的安全,以及遷移的便利性。下面以在centos平台建立mysql5.7容器化為例。關於docker的安裝本章就不說了,假設使用者對docker都有基本的認知。

docker pull mysql5.7
自定義本地與mysql容器相關的目錄

mkdir -p /docker/mysql
初步啟動乙個mysql容器(到時要刪除,只是想看看這個映象具體的mysql的配置情況,進行有針對性的掛載安排,只要是弄清楚my.cnf在**?conf.d 在**?資料儲存的位置在**?)

# 啟動乙個mysql容器,到時要刪除的

docker run -p 3306:3306 --name mymysql -e mysql_root_password=123456 -d mysql:5.7

進入容器(進入所有的容器都是這個命令,只不過容器名不同),查詢配置位置。

docker exec -it mymysql /bin/bash
發現my.cnf在容器內部的位置和名字是」/etc/mysql/my.cnf「,資料儲存在」/var/lib/mysql「,conf.d在」/etc/mysql/conf.d「。

退出容器(exit)

# 退出容器的命令

exit

把容器內的配置匯出到宿主機掛載的地方,作為初始配置。資料儲存不用匯出,就在宿主機的/docker/mysql/下新建datadir檔案。

# 複製mymysql容器內的配置檔案my.cnf到本地/docker/mysql/下

docker cp mymysql:/etc/mysql/my.cnf /docker/mysql/my.cnf

# 複製conf.d,也是配置有關於,倒是沒有仔細研究

docker cp mymysql:/etc/mysql/conf.d /docker/mysql/conf.d

# 建立資料放置的地方

mkdir /docker/mysql/datadir

啟動前刪除之前的容器,一則3306埠不夠用;二則,容器太多,也吃伺服器記憶體。

# 停止容器

docker stop mymysql

# 刪除容器

docker rm mymysql

啟動乙個mysql的容器,容器的名字是mysql5.7,-v代表掛載(-v 本地目錄:容器目錄),埠還是3306。--privileged=true表示容器的內的root具有真正的root許可權,否則進入容器後啥都受限。

docker run --privileged=true --name mysql5.7 -p 3306:3306 \

-v /docker/mysql/datadir:/var/lib/mysql \

-v /docker/mysql/conf.d:/etc/mysql/conf.d \

-v /docker/mysql/my.cnf:/etc/mysql/my.cnf -e mysql_root_password=root -d mysql:5.7

命令列執行容器內的mysql

# 若本地沒有mysql的登入工具,則:

sudo docker exec -it mysql5.7 bash

# 宿主機測試連線(-h少不了)

mysql -uroot -p -h127.0.0.1 -p 3306

若是阿里雲伺服器,切記把3306埠加入安全-防火牆白名單。

docker容器虛擬化

network namespace 是 linux 核心提供的功能,是實現網路虛擬化的重要功能,它能建立多個隔離的網路空間,它們有獨自網路棧資訊。不管是虛擬機器還是容器,執行的時候彷彿自己都在獨立的網路中。而且不同network namespace的資源相互不可見,彼此之間無法通訊。假如我們的物理機...

Docker容器虛擬化

network namespace 是 linux 核心提供的功能,是實現網路虛擬化的重要功能,它能建立多個隔離的網路空間,它們有獨自網路棧資訊。不管是虛擬機器還是容器,執行的時候彷彿自己都在獨立的網路中。而且不同network namespace的資源相互不可見,彼此之間無法通訊。假如我們的物理機...

docker容器虛擬化

network namespace 是 linux 核心提供的功能,是實現網路虛擬化的重要功能,它能建立多個隔離的網路空間,它們有獨自網路棧資訊。不管是虛擬機器還是容器,執行的時候彷彿自己都在獨立的網路中。而且不同network namespace的資源相互不可見,彼此之間無法通訊。假如我們的物理機...