數(shù)據(jù)庫在我們?nèi)粘i_發(fā)中接觸是很多的喻奥,平時(shí)自己沒事寫一些東西也經(jīng)常會(huì)用到席纽,之前專門寫過安裝MySQL、Redis撞蚕、MongoDB的文章润梯,各種安裝配置還是比較麻煩的,為了記下安裝步驟方便后期再安裝∩茫現(xiàn)在發(fā)現(xiàn)其實(shí)docker有現(xiàn)成的纺铭,幾條命令就能搭建一個(gè)數(shù)據(jù)庫出來,方便至極刀疙,簡單記錄一下舶赔,方便大家使用。
安裝MySQL 5.7
因?yàn)?.0的改動(dòng)比較大庙洼,密碼驗(yàn)證等需要修改顿痪,所以就使用MySQL5.7
下載鏡像
docker pull mysql:5.7
啟動(dòng)容器
docker run --name mysql -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root -v /var/lib/mysql/:/var/lib/mysql/ -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- -p:映射本地端口3306
- --restart:
- --restart具體參數(shù)值詳細(xì)信息:
- no - 容器退出時(shí),不重啟容器油够;
- on-failure - 只有在非0狀態(tài)退出時(shí)才從新啟動(dòng)容器蚁袭;
- always - 無論退出狀態(tài)是如何,都重啟容器石咬;
- --restart具體參數(shù)值詳細(xì)信息:
- MYSQL_ROOT_PASSWORD:設(shè)置root密碼為root
- --character-set-server/--collation-server=utf8mb4_unicode_ci:設(shè)置默認(rèn)數(shù)據(jù)庫編碼為utf8mb4,默認(rèn)排序規(guī)則為utf8mb4_unicode_ci
- -v:掛載本地目錄
/var/lib/mysql:/var/lib/mysql:映射數(shù)據(jù)目錄到宿主揩悄,防止容器重啟后數(shù)據(jù)丟失
/var/mysql/conf:/etc/mysql/conf.d:MySQL配置目錄,修改容器中配置(這里啟動(dòng)后鬼悠,遠(yuǎn)程就可以訪問删性,所以就不配置了)
PS:
-v綁定的目錄要新建或者清空
安裝Redis
下載鏡像
docker pull redis:latest
下載配置文件
將https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf配置文件下載到本地
啟動(dòng)容器
docker run -p 6379:6379 --restart=always -v $PWD/data:/data -v $PWD/conf/redis.conf:/etc/redis/redis.conf --privileged=true --name myredis -d redis redis-server /etc/redis/redis.conf
- --privileged:配置權(quán)限
- redis-server:啟動(dòng)redis服務(wù)命令
啟動(dòng)容器:番外
除了以上方式,我們還可以使用Dockerfile的方式來創(chuàng)建和啟動(dòng)容器
- 創(chuàng)建Dockerfile文件
FROM redis
COPY redis.conf /etc/redis/redis.conf
CMD [ "redis-server", "/etc/redis/redis.conf" ]
要在redis.conf文件所在目錄下創(chuàng)建
- 生成鏡像
docker build -t redis:v1.0 .
最后的.表示使用當(dāng)前目錄下的Dockerfile文件(redis:v1.0===鏡像名:版本)
啟動(dòng)容器命令有些改變
docker run -p 6379:6379 --restart=always -v $PWD/data:/data --privileged=true --name myredis -d myredis
安裝MongoDB
下載鏡像
docker pull mongo
docker pull mongo-express
可選焕窝,可視化web服務(wù)器
啟動(dòng)容器
docker run --name mymongo -p 27017:27017 -v $PWD/data:/data/db -d mongo
啟動(dòng)web訪問容器
docker run --link mymongo:mongo -p 8081:8081 mongo-express
擴(kuò)展
上面有兩個(gè)容器配合使用蹬挺,一個(gè)是MongoDB容器,一個(gè)是提供了可視化網(wǎng)頁訪問的容器它掂,我們可以使用docker-compose將兩個(gè)容器配置在yml中巴帮,這樣每次啟動(dòng)就可以同步啟動(dòng),不需要手動(dòng)去分別啟動(dòng)了
stack.yml
version: '3.1'
services:
mongo:
image: mongo:latest
ports:
- 27017:27017
volumes:
- ./data:/data/db
mongo-express:
links:
- mongo
image: mongo-express
ports:
- 8081:8081
docker-compose -f stack.yml up
docker命令
查看綁定目錄
docker inspect 容器ID
"Mounts": [
{
"Type": "bind",
"Source": "/home/mysql",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
Source:本地目錄
Destination:容器內(nèi)目錄(一般默認(rèn)都是這個(gè)目錄虐秋,無需修改)
查看容器IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器ID
查看容器綁定端口
docker port 容器ID