1.查看当前镜像列表可知当前无镜像:
root@ubuntu-xenial:/etc/docker# docker images
REPOSITORY(仓库) TAG(标识) IMAGE ID(镜像唯一标识) CREATED(拉取时间) SIZE(大小)
2.访问doucker hub查看想安装的mysql版本的TAG值(地址:https://hub.docker.com/),并执行如下指令:其中":5.7"是指定版本,此参数不指定将拉取最近版本,即":latest":
sudo docker pull mysql:5.7
3.查看镜像是否拉取成功:
root@ubuntu-xenial:/etc/docker# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 9cfcce23593a 4 weeks ago 448MB
4.启动镜像实例,并设置初始化参数:
root@ubuntu-xenial:/home/vagrant# 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 ba385514ac909d67e6d388c9d7fa441c19ed237edf7c3323b6a50ac59a53be5e
4.1.参数解释:
序号 | 指令 | 解释 |
1 |
docker run -p 3306:3306 --name mysql \ |
【docker run】:运行一个镜像实例容器的指令 【-p 3306:3306】:将宿主机的端口映射到实例容器的端口 【--name mysql】:给新运行的镜像实例指定名称 【 \】:指令换行符,后面将不再解释 |
2 | -v /mydata/mysql/log:/var/log/mysql \ |
将镜像实例的【日志】映射到宿主机的指定目录 宿主机:/mydata/mysql/log 实 例:/var/log/mysql |
3 | -v /mydata/mysql/data:/var/lib/mysql \ |
将镜像实例的【数据】映射到宿主机的指定目录 宿主机:/mydata/mysql/data 实 例:/var/lib/mysql |
4 | -v /mydata/mysql/conf:/etc/mysql \ |
将镜像实例的【配置】映射到宿主机的指定目录 宿主机:/mydata/mysql/conf 实 例:/etc/mysql |
5 | -e MYSQL_ROOT_PASSWORD=root \ |
指定镜像实例的mysql的root用户的密码 |
6 | -d mysql:5.7 | 后台运行镜像实例 |
7 |
ba385514ac909d67e6d388c9d7fa441c19ed237edf7c3323b6a50ac59a53be5e |
实例运行后返回的镜像实例的唯一主键 |
4.2.【思考】可使用"docker exec -it mysql /bin/base"(其中"mysql"是实例名称)进入实例内部进入到指定文件夹(上述表格中的镜像内的文件路径)中进行查看或配置。但是往往这样做比较麻烦,所有才使用数据映射的方式进行操作。
5.查看当前正在运行中的容器:
root@ubuntu-xenial:/home/vagrant# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba385514ac90 mysql:5.7 "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
6.修改mysql的配置:此处以修改mysql字符编码为例:
sudo vi /mydata/mysql/conf/my.conf
6.1.配置的内容:
[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
7.重启mysql镜像实例(指令中的"mysql"为实例名称,也可以用实例列表中CONTAINER ID中的值):
sudo docker restart mysql