提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
前言
隨著虛擬化技術(shù)和云計算的普及,容器技術(shù)的優(yōu)點也逐步體現(xiàn),軟件部署和環(huán)境遷移的優(yōu)勢無可替代。
目前Docker已經(jīng)成為容器技術(shù)中的主要代表,恰好涉及需要在liunux系統(tǒng)上部署Mysql數(shù)據(jù)庫用于測試,由于是初次使用docker部署Mysql,所以對其中一些操作進行記錄。
一、基礎(chǔ)的虛擬機環(huán)境
使用虛擬機,安裝ubuntu系統(tǒng),發(fā)行版和內(nèi)核信息如下:
root@ldap:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
root@ldap:/# uname -r
5.15.0-72-generic
root@ldap:/#
只所以使用ubuntu是因為centos各大鏡像站都已經(jīng)停止維護,在基礎(chǔ)系統(tǒng)安裝過程中,經(jīng)常出現(xiàn)一些莫名其妙的問題,雖然可以解決但比較浪費時間。
二、安裝過程
安裝配置docker
# 安裝 docker 和 docker-compose
#先移除docker。其實也不用重裝docker,我用的ubuntu里已經(jīng)安裝了完整的docker,但我想用用華為云發(fā)布的docker-ce,所以就按說明對原docker進行了移除操作
#如果不是root用戶,則需要加sudo,否則不用。
sudo apt remove docker docker-engine dockdocker.io containerd runc
#更新后,安裝依賴,apt源已經(jīng)改為華為鏡像源
sudo apt update
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#運行公鑰,添加docker軟件倉庫
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#安裝docker-ce docker-ce-clicontainerd.io
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
#sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#sleep 1
#sudo chmod +x /usr/local/bin/docker-compose
#安裝docker-compose
apt install docker-compose docker-compose-plugin -y
#啟動docker,開機自啟動
systemctl start docker
systemctl enable docker
拉取Mysql鏡像
#查看倉庫mysql鏡像
#docker search mysql
docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 14159 [OK]
mariadb MariaDB Server is a high performing open sou… 5408 [OK]
percona Percona Server is a fork of the MySQL relati… 609 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 802 [OK]
circleci/mysql MySQL is a widely used, open-source relation… 29
bitnami/mysql Bitnami MySQL Docker Image 86 [OK]
bitnami/mysqld-exporter 5
ubuntu/mysql
#使用命令docker pull mysql ,默認tag:latest
docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
90e2fb2facff: Pull complete
ba60eb20fd5f: Pull complete
4f509402d469: Pull complete
496c2cfa6815: Pull complete
8ec1dfa9522c: Pull complete
6dec7ba896f8: Pull complete
dc9ff75362b0: Pull complete
73e4682f9014: Pull complete
9ffdeecd6fb6: Pull complete
a4346ccfb53f: Pull complete
434c13bc32de: Pull complete
Digest: sha256:d6164ff4855b9b3f2c7748c6ec564ccff841f79a7023db0f9293143481a44b6e
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
用docker啟動mysql
docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
60bc33b60efa81c32d93e3452fd5fbe3a5d72c4cfc898d77af1a70a83cdd77e5
root@l:/#
root@l:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@:/#
命令的使用和參數(shù)具體解釋如下:
1.必要參數(shù):
-p 3306:3306:將宿主主機的3306端口映射到容器的3306端口,使宿主主機可以連接容器內(nèi)的MySQL服務(wù)。
–name mysql:為容器命名為mysql。
2.數(shù)據(jù)卷配置參數(shù):
-v /mydata/mysql/log:/var/log/mysql:將宿主機上的/mydata/mysql/log目錄掛載到容器的/var/log/mysql目錄下,用于存儲MySQL的日志文件。
-v /mydata/mysql/data:/var/lib/mysql:將宿主機上的/mydata/mysql/data目錄掛載到容器的/var/lib/mysql目錄下,用于存儲MySQL的數(shù)據(jù)文件。
-v /mydata/mysql/conf:/etc/mysql:將宿主機上的/mydata/mysql/conf目錄掛載到容器的/etc/mysql目錄下,用于存儲MySQL的配置文件。
3.MySQL賬戶安全參數(shù):
-e MYSQL_ROOT_PASSWORD=root:設(shè)置MySQL的root賬戶密碼為root。建議設(shè)置復(fù)雜的密碼。
4.容器啟動參數(shù):
-d mysql:lates:使用MySQL:lates鏡像,在宿主機后臺啟動容器,并命名為mysql。
通過以上參數(shù)配置,可以實現(xiàn)對MySQL容器的定制化部署,提高應(yīng)用程序的性能和可靠性。
這時候,返回一串字符“60bc33b60efa81c32d93e3452fd5fbe3a5d72c4cfc898d77af1a70a83cdd77e5”
表示命令正常執(zhí)行,而且已經(jīng)運行了Mysql鏡像容器。
當然,如果你這樣做了,會發(fā)現(xiàn):
#使用docker ps查看不到mysql的進程
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#加參數(shù)-a后是有記錄的
# docker ps -a
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60bc33b60efa mysql "docker-entrypoint.s…" 2 days ago Exited (1) 2 days ago mysql
原因是:雖然成功運行的了mysql容器,但是容器中沒有在執(zhí)行的程序,所以容器自動停止了。
你可以根據(jù)自己的需要,在啟動時添加容器運行參數(shù),例如文章來源:http://www.zghlxwxcb.cn/news/detail-586507.html
#以交互方式運行容器,并加載bash指令集
#docker run -it -p 3306:3306 --name mysql_new1 -e MYSQL_ROOT_PASSWORD=root -d mysql bash
#之前使用centos、ubuntu等基礎(chǔ)鏡像時,使用參數(shù)-it后,會進入到容器內(nèi),但這里不知道為什么,命令符還是宿主機的
docker run it -e MYSQL_ROOT_PASSWORD=root -d mysql bash
101258d2fdbf87f97dd533a05f164e2c6ec152e170a497b4ac787723cfc2cc81
# docker ps就可以看到運行容器狀態(tài)
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
101258d2fdbf mysql "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_new1
#進入容器:docker exec -it mysql bash
docker exec -it 101 bash
bash-4.4# ls
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
bash-4.4# cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="8.8"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:8:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.8
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.8
#尷尬了,沒用過Oracle Linux 8
總結(jié)
以上就是我使用docker運行mysql的過程記錄,docker的使用使用雖然簡單而且便利,但對不同程序鏡像運行容器時,還是要對具體要運行的程序有一定的了解,比如mysql,至少要知道一些mysql的使用命令或者參數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-586507.html
到了這里,關(guān)于使用Docker容器運行Mysql的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!