数据库在我们日常开发中接触是很多的,平时自己没事写一些东西也经常会用到,之前专门写过安装MySQL、Redis、MongoDB的文章,各种安装配置还是比较麻烦的,为了记下安装步骤方便后期再安装。现在发现其实docker有现成的,几条命令就能搭建一个数据库出来,方便至极,简单记录一下,方便大家使用。
因为8.0的改动比较大,密码验证等需要修改,所以就使用MySQL5.7
docker pull mysql:5.7
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
PS: -v绑定的目录要新建或者清空
docker pull redis:latest
将https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf配置文件下载到本地
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
除了以上方式,我们还可以使用Dockerfile的方式来创建和启动容器
FROM redis
COPY redis.conf /etc/redis/redis.conf
CMD [ "redis-server", "/etc/redis/redis.conf" ]
要在redis.conf文件所在目录下创建
docker build -t redis:v1.0 .
最后的.表示使用当前目录下的Dockerfile文件(redis:v1.0===镜像名:版本)启动容器命令有些改变
docker run -p 6379:6379 --restart=always -v $PWD/data:/data --privileged=true --name myredis -d myredis
docker pull mongo
docker pull mongo-express
可选,可视化web服务器
docker run --name mymongo -p 27017:27017 -v $PWD/data:/data/db -d mongo
docker run --link mymongo:mongo -p 8081:8081 mongo-express
上面有两个容器配合使用,一个是MongoDB容器,一个是提供了可视化网页访问的容器,我们可以使用docker-compose将两个容器配置在yml中,这样每次启动就可以同步启动,不需要手动去分别启动了 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 inspect 容器ID
"Mounts": [
{
"Type": "bind",
"Source": "/home/mysql",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
Source:本地目录 Destination:容器内目录(一般默认都是这个目录,无需修改)
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器ID
docker port 容器ID