docker安裝mysql

一. 創(chuàng)建網(wǎng)絡(luò)

docker create network backend

為什么要?jiǎng)?chuàng)建網(wǎng)絡(luò)?
因?yàn)檫@是實(shí)現(xiàn)docker容器互聯(lián)的方式之一, 只要在同一臺(tái)主機(jī)的docker容器, 都加入到同一個(gè)網(wǎng)絡(luò)中, 容器中的服務(wù), 就可以通過(guò) 容器名稱(chēng)[:端口]的方式來(lái)訪(fǎng)問(wèn)其他容器提供的服務(wù)(如:數(shù)據(jù)庫(kù)服務(wù),http服務(wù)等)

為后續(xù)安裝gogs連接數(shù)據(jù)庫(kù)做準(zhǔn)備

二.啟動(dòng)mysql服務(wù)

  • 創(chuàng)建物理目錄, 用于存儲(chǔ)mysql的數(shù)據(jù)庫(kù)/表數(shù)據(jù)(無(wú)需指定特殊權(quán)限)
# 用于存放mysql數(shù)據(jù)文件
mkdir /opt/docker/data/mysql/data
# 用于存放mysql配置文件
mkdir /opt/docker/data/mysql/conf
  • 在/opt/docker/data/mysql/conf目錄下建立3個(gè)mysql配置文件 docker.cnf, mysql.cnf, mysqldump.cnf

docker.cnf 內(nèi)容

[mysqld]
skip-host-cache
skip-name-resolve

mysql.cnf內(nèi)容

[mysql]
default-character-set = utf8


[mysql_safe]
default-character-set = utf8


[client]
default-character-set = utf8


[mysqld]
pid-file      = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
datadir       = /var/lib/mysql
#log-error    = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# 修改mysql默認(rèn)字符集
init_connect  = 'SET NAMES utf8'
character-set-server = utf8
collation-server = utf8_unicode_ci

mysqldump.cnf內(nèi)容

[mysqldump]
quick
quote-names
max_allowed_packet  = 16M
  • 啟動(dòng)mysql服務(wù)
docker run -d --name mysql57 --net=backend -p 3306:3306 \ 
-e MYSQL_ROOT_PASSWORD=root \ 
-v /opt/docker/data/mysql/data:/var/lib/mysql \ 
-v /opt/docker/data/mysql/conf:/etc/mysql/conf.d \ 
mysql:5.7.21

參數(shù)說(shuō)明:

-d: 指定該容器以后臺(tái)方式運(yùn)行
--name: 指定容器名稱(chēng)為mysql57. 這個(gè)名字隨自己喜好定義即可
--net: 將容器加入backend網(wǎng)絡(luò)
-p: 建立宿主機(jī)和容器的端口映射, 第一個(gè)3306表示宿主機(jī)的端口,第二個(gè)3306表示容器的端口, 訪(fǎng)問(wèn)宿主機(jī)的3306端口就等于于訪(fǎng)問(wèn)容器的3306端口
-v: 將宿主機(jī)的目錄掛載到容器中.(將數(shù)據(jù)與容器分離)
mysql:5.7.21: mysql鏡像

三. 查看容器運(yùn)行狀態(tài)和日志

查看容器運(yùn)行狀態(tài):
docker ps -a | grep mysql57

查看容器日志:
查看最后200條日志
docker logs --tail=200 mysql57

滾動(dòng)監(jiān)聽(tīng)
docker logs -f mysql57

p.s. 解決時(shí)區(qū)問(wèn)題

這應(yīng)該算是個(gè)很容易讓人遺忘的問(wèn)題, 如果你多個(gè)容器之間,時(shí)區(qū)不一致, 那么就有可能導(dǎo)致你的程序出現(xiàn)各種詭異的問(wèn)題(特別是有定時(shí)任務(wù)的時(shí)候), 那么要怎么設(shè)置時(shí)區(qū)呢? 請(qǐng)參考我的另一篇文章, 專(zhuān)門(mén)講各個(gè)容器的時(shí)區(qū)問(wèn)題怎么解決,以及中文問(wèn)題.

四. 測(cè)試

  1. 在mysql中創(chuàng)建數(shù)據(jù)庫(kù)test
  2. 使用如下命令停止并刪除mysql57容器
docker stop mysql57
docker rm mysql57
  1. 再次啟動(dòng)mysql容器
docker run -d --name mysql57 --net=backend -p 3306:3306 \ 
-e MYSQL_ROOT_PASSWORD=root \ 
-v /opt/docker/data/mysql/data:/var/lib/mysql \ 
-v /opt/docker/data/mysql/conf:/etc/mysql/conf.d \ 
mysql:5.7.21
  1. 連接mysql, 查看test數(shù)據(jù)庫(kù)是否存在, 如果存在,則說(shuō)明你成功完成了mysql容器的安裝
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容