一. 創(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è)試
- 在mysql中創(chuàng)建數(shù)據(jù)庫(kù)
test - 使用如下命令停止并刪除mysql57容器
docker stop mysql57
docker rm mysql57
- 再次啟動(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
- 連接mysql, 查看test數(shù)據(jù)庫(kù)是否存在, 如果存在,則說(shuō)明你成功完成了mysql容器的安裝