1. 拉取镜像
docker pull mysql:5.7
2. 创建数据卷
数据卷有三种模式
主机卷:
-v /hostpath:/var/lib/mysql
命名卷
docker volume create mydata
-v mydata:/var/lib/myslq
匿名卷
-v /var/lib/mysql
# 主机的映射自己生成,一个64位的名称, 例如 9f733f91350e340f59dbe3fae969ec1c9e3fbf5b772c4ff76efbf860afb1aa4f
3. 运行docker容器
docker run -it -d -p 3304:3306 -e MYSQL_ROOT_PASSWORD=ROOT -v mydata:/var/lib/mysql --name mysql57-docker mysql:5.7
4. 连接mysql
mysql -uroot -P 3304 -p
5. 修改mysql密码
mysql> select user(); # 查看用户
+-----------------+
| user() |
+-----------------+
| root@172.17.0.1 |
+-----------------+
1 row in set (0.00 sec)
mysql> use mysq;
mysql> select user, host from user; # 查看用户
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
mysql> alter user 'root'@'%' identified by 'root';
Query OK, 0 rows affected (0.00 sec)
alter user 'root'@'%' identified by 'root';
6. docker desktop数据卷位置
浏览器输入, 因为使用的wsl,所以目录不在物理硬盘上
\\wsl$\docker-desktop
\\wsl$\docker-desktop-data
7. 涉及到的docker 命令回顾
docker volume ls # 查看数据卷
docker volume create myvolume # 创建数据卷
docker inspect dockerId # 查看容器元数据
docker volume inspect # 查看数据卷元数据
docker start dockerId # 启动容器
docker stop dockerId # 停止容器
docker rm dockerId # 删除容器
docker run -it -d -p hostport:dockerport 后台启动容器
docker exec -it dockerId /bin/bash # 进入docker
docker images # 查看本地镜像列表
docker pull mysql:5.7 # 拉取mysql5.7 的镜像
docker iamge rm imageId # 删除镜像
docker inspect imageId # 查看镜像元数据
元数据查看
docker inspect id # 查看id的元数据信息, 这个id可以是数据卷的id, 镜像id, 容器id
# 另外查看数据卷的元数据可以单独使用这个
docker volume inspect volumeId
# 查看镜像的元数据
docker image inspect imageid
# 查看容器的元数据
docker container inspect containerId
这样设计的重复命令的意义是什么?
对于程序而言, 可读性往往比代码简洁更重要, 可读性意味着维护更容易
所以对于我们的操作知道操作的对象是什么类型显得更加清晰,当我们排查问题时候可以更具语义排除一些情况