sudo docker pull mysql:5.7
【注】docker pull mysql 如果不指定版本,默认安装最新版本。
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。不想用sudo,使用命令su root,切换到root账户即可。
为了演示,下面后直接切换到root账户去操作。
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
【参数释义】
-p 3306:3306:是将容器的 3306 端口映射到主机的 3306 端口
-e MYSQL_ROOT_PASSWORD=root:初始化root
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
挂载到主机,通俗点理解就是,跟平时我们创建文件夹的快捷方式到桌面那种意思
命令docker ps,可以查看到实例已经启动
最后用可视化工具测试一下实例是否正常启动即可。
创建一个配置文件,命令如下
vi /mydata/mysql/conf/my.cnf
i是进入编辑模式,:wq是保存并退出
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
上面主要是
(1)设置编码为utf8,编码设置特别重要。特别是跨系统间的文件传输和文件解析,约定好编码是非常重要的。
(2)skip-name-resolve:跳过域名解析。在学习阶段,跳过域名解析,会使连接MySQL更快速。
docker exec -it mysql mysql -uroot -proot
这个命令可以直接进入MySQL的命令界面。
docker exec -it mysql /bin/bash
(1)如果创建实例时报错
docker: Error response from daemon: Conflict. The container name "/mysql" is already in use by container "6dbffc5dc492eb576928a49cc4cf15f0c34c7f3d767e48ac4c213d9054562d69". You have to remove (or rename) that container to be able to reuse that name.
(2)移除原来的container ID,再重新创建实例即可
docker rm + container ID
docker: Error response from daemon: Conflict. The container name “/mysql“ is already in use 解决
其他镜像在docker的安装,也是如此,下载安装+创建实例启动。
不熟悉的情况下,先去官网查看一下要下载的镜像(以Redis为例)
https://hub.docker.com
docker pull redis
主要su root 切换到root账户,不指定版本即默认安装最新版
(2)Redis创建实例并启动
在创建实例启动前,需要先创建配置目录
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
Redis创建实例并启动
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
(3)使用 redis 镜像执行 redis-cli 命令连接
docker exec -it redis redis-cli
(4)Redis的持久化配置
进入配置文件,增加配置
vi redis.conf
appendonly yes