初识docker

相关链接

Golang的docker尝试https://studygolang.com/articles/11427
创建超小的Golang docker 镜像https://colobu.com/2015/10/12/create-minimal-golang-docker-images/

基础命令

docker ps // 查看所有正在运行容器
docker ps -a                            列出所有容器
docker ps -a -q // 查看所有容器ID
docker stop <containerID>               停止指定ID的容器
docker rm <containerID>                  删除指定ID的容器

docker stop $(docker ps -a -q) //  stop停止所有容器
docker  rm $(docker ps -a -q) //   remove删除所有容器

docker image ls                       列出所有镜像
docker image rm <imageID>   删除指定ID的镜像,imageID可以只写前三位

docker container ls -a              列出终止状态的容器
docker container start <containerID>  //重启容器

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;

//选定表
use mysqlTest;

//查看表结构
show tables;

//查看表数据
select * from “表名”;
屏幕快照 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启动ETCD

相关链接https://github.com/etcd-io/etcd/releases

etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
  docker rmi gcr.io/etcd-development/etcd:v3.3.13 || true && \
  docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
  --name etcd-gcr-v3.3.13 \
  gcr.io/etcd-development/etcd:v3.3.13 \
  /usr/local/bin/etcd \
  --name s1 \
  --data-dir /etcd-data \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://0.0.0.0:2379 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --initial-advertise-peer-urls http://0.0.0.0:2380 \
  --initial-cluster s1=http://0.0.0.0:2380 \
  --initial-cluster-token tkn \
  --initial-cluster-state new

下一步进入容器进行操作

docker exec etcd-gcr-v3.3.13 /bin/sh -c "/usr/local/bin/etcd --version"
docker exec etcd-gcr-v3.3.13 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
docker exec etcd-gcr-v3.3.13 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
docker exec etcd-gcr-v3.3.13 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
docker exec etcd-gcr-v3.3.13 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335