Docker学习笔记持续更新

1、Docker没有vi命令的解决方案

1、安装

apt-get install vim

如果提示

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package vi

则需要执行

apt-get update

然后再执行

apt-get install vim

2、docker修改mysql配置文件后,无法启动mysql容器

skip-grant-tables	

这条命令在mysql中可以使用,但你要是在mysql容器中使用那你就掉坑了。
然后你就运行不了mysql容器。
之所以会这样子是因为你没找对的不是容器里mysql.cnf配置文件

解决方案:

docker inspect [mysql id]: //获取容器/镜像的元数据。
我们可以在这个配置文件里面找到MergedDir目录位置,并返回到上一级目录
找到diff/etc/mysql/mysql.cnf,	然后删除掉我们刚刚在【mysqld】下填的哪一行命令
skip-grant-tables

然后就可以启动容器了

3、mysql容器密码过期的时候,怎么解决

针对第二个问题,头疼了好久,今天终于找到了解决的方案

解决步骤

  1. 增加“忘记密码启动”模式
  2. 重新设置root密码
  3. 删掉“忘记密码启动”模式
  4. 重启容器镜像即可

具体操作

  1. 进入mysql容器:docker exec -it mysql bash
  2. 编辑mysql配置文件,增加“忘记密码启动”模式:skip-grant-tables
vim /etc/mysql/conf.d/docker.cnf

ps:在这个配置文件修改
最终配置文件docker.cnf内容如下:

[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables
  1. 退出容器,重启容器实例

     docker restart mysql 
    
  2. 通过步骤一重新进入容器,就可以免密登录了

  3. 设置root密码,因为是mysql密码过期导致的,这里用

#切换实例,user表位于mysql实例下
mysql> use mysql;
#更改root密码
UPDATE user SET authentication_string= password ( '123456' ) WHERE User = 'root';
# 刷新权限
mysql> flush privileges;
# 退出
mysql> quit

ps: MySQL5.7以下是authentication_string字段,以上版本是Password,应该是这样子的!!

  1. 重新编辑mysql配置文件docker.cnf,删掉“忘记密码启动”模式

     vim /etc/mysql/conf.d/docker.cnf
    
  2. 退出容器,重启容器

     	docker restart mysql
    
  3. 如果要设置mysql密码永不过期的话,可以加一步

     ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    
发布了33 篇原创文章 · 获赞 88 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章