总体步骤
- 搜索镜像
- 拉取镜像
- 查看镜像
- 启动镜像
- 服务端口映射
- 停止容器
- 移除容器
安装mysql
- 在docker hub上查询mysql
docker search mysql
- 拉取mysql5.7版本镜像
docker pull mysql:5.7
- 创建容器,映射到本地3309端口,因为本地有mysql,3306被占
docker run -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
进行一些简单的操作
外部连接:
删除容器后,mysql的数据怎么办
先停止并删除刚建的容器,kill+rm
docker run -d -p 3309:3306 --privileged=true -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
通过容器卷将字符问题解决方法同步给mysql容器(默认不支持中文)
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
登录不进去在 mysqld里加一条 skip-grant-tables
这次再试试把当前容器删除重新来一次,数据还存在吗?
安装redis
拉取对应版本
docker pull redis:6.0.8
进入容器,由于本机有redis,端口映射到6378
docker run -d -p 6378:6379 redis:6.0.8
登录客户端
redis-cli
持久化
创建一个目录,将redis.conf文件复制进来(如果你没安装过redis可跳过安装redis这章)
切记!你的redis.conf文件的版本要和docker pull redis的版本一致!
修改redis.conf:
- requirepass注释掉
- bind 127.0.0.1 注释掉
- daemonize 设为no
- appendonly 设为yes
创建容器
docker run -p 6378:6379 -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf --privileged=true
我们先创建了一个redis的容器并进入,set了一个k-v对,张三-20。然后退出容器并删除它。利用一样的配置重新run了一个redis容器并进入,get能获取张三对应的value