分享
  1. 首页
  2. 文章

docker学习

十六月 · · 1463 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

相关链接

Golang的docker尝试https://studygolang.com/articles/11427

基础命令

docker ps -a 列出所有容器
docker stop <name> 停止指定名称的容器
docker rm <name> 删除指定名称的容器
docker image ls 列出所有镜像
docker image rm <imageID> 删除指定ID的镜像,imageID可以只写前三位
docker container ls -a 列出终止状态的容器
docker build -t <name> . 编译镜像,注意最后的点符号是指定当前目录

docker启动mysql

// 拉取
docker pull mysql 
//启动 mysql 容器( 参数 -i -t 等价于 -it 表示insert , 进入 ; /bin/bash 表示 shell 脚本交互界面 )
docker run -it mysql /bin/bash
//查看mysql版本号
mysql --version
//退出容器
exit
//想要服务一直运行
//(参数 -p 设置端口,--name 取名 ,-e MYSQL_ROOT_PASSWORD=123456 设置 账号为 root ,密码为 sql123456 -d 表示作为一个守护进程在后台运行 )
docker run -p 3306:3306 --name mysqlTest -e MYSQL_ROOT_PASSWORD=sql123456 -d mysql
//查看运行的容器
docker ps -a
//查看容器对应的端口号
docker port mysqlTest
//方法一、启动mysql(本机装了mysql)
mysql -h 127.0.0.1 -u root -p
//方法二、启动mysql(本机没装mysql)
//先进入容器内、再启动mysql
docker exec -it mysqlTest /bin/bash
mysql -u root -p
//新建数据库
create database mysqlTest;
//查看数据库
show databases;
屏幕快照 2019年05月22日 下午5.57.15.png

服务端连接数据库

func initDB() (*gorm.DB, error) {
 s := Mysql{
 UserName: "root",
 Password: "12345678",
 Database: "mysqlTest",
 Address: "tcp(localhost:3306)",
 Parameters: "charset=utf8&parseTime=True&loc=Local",
 MaxIdle: 10,
 MaxOpen: 20,
 Debug: true,
 MigrationDir: "",
 }
 fmt.Println("connect string", s.String())
 db, err := gorm.Open("mysql", s.String())
 if err != nil {
 fmt.Println("Open error", err)
 return nil, err
 }
 err = db.DB().Ping()
 if err != nil {
 fmt.Println("Ping error", err)
 return nil, err
 }
 db.DB().SetMaxIdleConns(s.MaxIdle)
 db.DB().SetMaxOpenConns(s.MaxOpen)
 db.LogMode(s.Debug)
 // err = db.AutoMigrate(&User{}).Error
 if err != nil {
 fmt.Println("AutoMigrate error", err)
 return nil, err
 }
 return db, nil
}

报错:this authentication plugin is not supported
解决:这里是因为MySQL 8 支持新的加强的密码加密,这里有两种密码类型

Use Strong Password Encryption
Use Legacy Password Encryption

docker启动mysql时默认是第一个strong类型,但是很多终端还不支持strong的加密插件。
需要改为legacy类型

可以在mysql中查看,结果见下图:

mysql> select host,user,plugin from mysql.user;
屏幕快照 2019年05月22日 下午6.01.28.png

将里面这几项逐项改为legacy类型:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678';
ALTER USER 'mysql.infoschema'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
ALTER USER 'mysql.session'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
ALTER USER 'mysql.sys'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';

再次查看,结果如下


屏幕快照 2019年05月22日 下午6.07.05.png

再去服务端连接数据库,发现OK啦


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:十六月

查看原文:docker学习

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1463 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏