.1. 容器管理 .1.1. 容器运行 .1.2. 查看容器 .1.3. 查看容器日志 .1.4. 容器删除 .1.5. 查看容器系统资源信息 .1.6. 容器内部命令 .1.7. 复制文件相互 .2. 导入导出容器 .2.1. 导出容器 .2.2. 导入容器 .3. 重启启动 .3.1. 系统开机启动 .3.2. 容器开机启动 .4. 多容器管理 .4.1. Docker Compose .4.2. docker-compose 安装 .4.2.1. 启动/停止 .4.2.2. 操作指定文件yml的容器 .5. 参考 Docker 倡导的理念是: “一个容器一个进程” 容器是镜像运行的一个实例 它们的区别是镜像是一个静态只读文件, 而容器是一个运行时可写的文件层. .1. 容器管理 dockerID 是由128位组成, 前16位保证唯一. docker ps --no-trunc .1.1. 容器运行 基本命令: docker run 例docker run --name db --env MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mariadb
.1. Docker 三大基础组件 .2. Docker 指令 Docker 三大基础组件 三个重要的概念 仓库(Repository) 镜像(Image) 容器(Container) 实例命令: docker run --name db --env MYSQL_ROOT_PASSWORD=sgfoot.com -d mariadb 先在本机查找有没有 mariadb 镜像, 如果没有,就到 docker 的仓库查找 mariadb 镜像, 然后下载到本机 基本 mariadb 镜像创建容器 db, 提供 mysql 服务 然后通过 docker ps 查看正在运行的容器. Docker 指令 基本命令格式如下: docker + command(如run, ps) + 一系列参数(args...) 如: docker run --name db --env MYSQL_ROOT_PASSWORD=sgfoot.com -d mariadb 命令帮助 docker command --help 如: docker run --help 命令分四大类 系统资源设置和全局信息获取: docker info, docker system df Docker 仓库查询, 下载操作:docker search, docker pull Docker 镜像查询,创建,删除操作: docker images, docker build, docker rmi Docker 容器查询,创建,开启,停止,删除,详情操作:docker ps, docker run, docker start, docker stop, docker rm, docker inspect Docker 调试: docker logs(日志), docker stats(运行状态) 其它: 删除所有停止运行的容器 docker rm $(docker ps -a -q) (危险操作)
前面教程介绍过 docker 是 c/s 模式, 通过 client 命令 与 server 端进行交互, docker 有着强大的命令系统, 我们需要系统学习下. 基础的命令 查看版本 docker version 查看 docker 信息 会显示多少镜像,容器, 运行中,暂停中, 停止的容器数量, cpu, memory, system等信息 docker info 容器操作 下载仓库 docker pull centos 运行容器 docker run -it centos /bin/bash docker run -it -i 交互式操作 -t 终端 centos 镜像 /bin/bash 交互使用/bin/bash模式 查看容器 docker ps 查看正在运行的容器 docker ps -a 查看所有容器,包括运行中,停止和暂停的容器 启动指定ID的容器 docker start ID 支持3位数操作. 停止容器 docker stop ID 暂停容器 docker pause ID

Git Tag 常用命令

git tag 是给当前仓库设置一个快照,常用于设置版本号, 你有必须知道一下. 查看 git tag # 查看当前项目的tag git show v1.0.0 # 查看某 tag 的详情 创建 git tag v1.0.0 # 给当前项目版本打上 v1.0.0 版本号 # 给指定的提交版本号打上 tag git log --pretty=oneline --abbrev-commit # 查看所有短ID 312bda6 (HEAD -> master) # 给日志 312bda6 打上 tag git tag v1.0.3 312bda6 # 给标签写上注释 git tag -a v1.2.0 -m "tag notes" 提交 git push origin v1.0.0 # 将 v1.0.0 推送到远程 git push --tags # 推送本地的所有的 Tag 删除 git tag -d v1.
在做 go 开发, 如果是使用 go1.11 版本, 相信大家都会使用到 go mod 做为依赖管理, 因为 go mod 可以设置代理,国外的包,轻松下载. 但是在某一天你使用公司自建的 gitlab ,需要引用 gitlab 上面的依赖包,就需要做一些设置才会正常 go mod tidy,否则会出现无法引用的问题. 本文介绍一下如何操作. 适用于 window, linux 环境, 本人没 macOSX 你将学到: 如何设置 go mod 代理 如何设置 go env GOPRIVATE 变量 如何在代码里引用自建的 gitlab 依赖代码 设置 go mod 代理 linux, window 设置 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct 实践 假定私有 gitlab 仓库地址为: http://mygit.sgfoot.com/ (注意只支持http, 不支持https) 创建一个 gitlab 依赖代码 仓库地址HTTP: http://mygit.sgfoot.com/common.git 仓库地址SSH: git@mygit.
脚本工具 名称 安装/下载 备注 检查 shell 工具 yum -y install ShellCheck 下载 能检查sh语法
仅适用 CentOS 7 mysqld_export 安装 prometheus 监听 mysql 服务 一键安装 curl -sSL http://s1.sgfoot.com/sh/mysql_exporter.sh | sudo bash 验证 # 验证进程是否启动 netstat -nplt |grep mysqld_exporter # 验证是否可以获取 metrics curl http://localhost:9104/metrics 配置nginx安全访问 如果涉及到外网访问则需要配置密码访问 参考:nginx 添加权限验证 htpasswd -bc /etc/nginx/htpasswd.users sgfoot sgfoot.pass # sgfoot 是帐号名 # sgfoot.pass 是密码 nginx 的vhost配置 mysqld_exporter.conf server { listen 80; server_name mysqld_exporter.io; location / { auth_basic "Prometheus"; auth_basic_user_file /etc/nginx/htpasswd.users;# 验证文件 proxy_pass http://127.0.0.1:9104; } } 添加 prometheus 节点 配置 host
你将会学到 一个完整的gRPC流实例,包括单向流与双向流的操作 如何实现gRPC流服务端代码 如何实现gRPC流客户端代码 准备 新建一个文件夹 go-grpc-simple-stream 在go-grpc-simple文件夹下建立三个目录: client, proto,server 使用 go mod 管理代码 在 go-grpc-simple-stream 目录下执行 go mod init go-grpc-simple-stream 编写 proto 文件 在 go-grpc-simple-stream/proto 目录下新建 hello.proto 文件 syntax = "proto3"; package hello; service HelloService { // 定义一个服务端推送客户的单向流 rpc ServerToClient(StreamRequest) returns (stream StreamResponse){}; // 定义一个客户端推送服务端的单向流 rpc ClientToServer(stream StreamRequest) returns (StreamResponse){}; // 定义一个服务端与客户端的双向流 rpc AllStream(stream StreamRequest) returns (stream StreamResponse){}; } // stream 请求结构 message StreamRequest { string data = 1; } // stream 响应结构 message StreamResponse { string data = 1; } 生成 pb go 代码 在 go-grpc-simple-stream/proto 目录下新建 gen.
你将会学到 一个完整的gRPC实例 如何实现gRPC服务端代码 如何实现gRPC客户端代码 准备 新建一个文件夹 go-grpc-simple 在go-grpc-simple文件夹下建立三个目录: client, proto,server 使用 go mod 管理代码 在 go-grpc-simple 目录下执行 go mod init grpc-simple 编写 proto 文件 在 go-grpc-simple/proto 目录下新建 hello.proto 文件 // 选择 proto3 语法 syntax = "proto3"; // 定义一个包名 package hello; // 定义一个 service 服务,相当于 GO 接口定义 service HelloService { // 以 rpc 开头,定义未实现的方法名称。 必须要有一个请求 message 和响应 message // rpc, returns 都是关键字 rpc Hello(StringRequest) returns (StringResponse){}; } // message 相当于一个结构体,里面定义字段属性, 先类型后变量名,然后序列号。 // protoful 编码是通过成员的唯一编号来绑定对应的数据。 // 定义一个请求结构体 message StringRequest { string value = 1; } // 定义一个响应结构体 message StringResponse { string result = 1; } 生成 pb go 代码 在 go-grpc-simple/proto 目录下新建 gen.
Protobuf 是 Protobuf Buffers 的简称,它是 Google 公司开发的一种数据描述语言,并于2008年开源。 可用作为设计安全的跨语言 RPC 接口的基础工具。 目前 Protobuf 已经发展到第3版本,即 syntax = "proto3"; 你将会学到 如何编写 protobuf 文件 如何通过protoc工具生成 go 代码 编写 protobuf 文件 先定义语法版本 再定义package 定义一个 service 定义一组 request,response 的 message 创建 hello.proto 文件 第一行结尾需要写上分号; service 相当于定义接口, rpc 定义未实现的接口方法 message 相当于定义一个结构体,里面定义字段属性, 先类型后变量名,然后序列号。 每一行数据类型后需要写一个编号,从1开始,因为编码是通过成员的唯一编号来绑定对应的数据。 推荐使用请求message后加上Request关键字, 如StringRequest 推荐使用响应message后加上Response关键字,如StringResponse // 选择 proto3 语法 syntax = "proto3"; // 定义一个包名为 hello package hello; // 定义一个 service 服务名为 HelloService,相当于 GO 接口定义 service HelloService { // 以 rpc 开头,定义未实现的方法名称。 必须要有一个请求 message 和响应 message // rpc, returns 都是关键字 rpc Hello(StringRequest) returns (StringResponse){}; } // message 相当于一个结构体,里面定义字段属性, 先类型后变量名,然后序列号。 // protoful 编码是通过成员的唯一编号来绑定对应的数据。 // 定义一个请求结构体 message StringRequest { string value = 1; } // 定义一个响应结构体 message StringResponse { string result = 1; } 标量类型 以下只列出常用的类型对应关系。更多参考最下面的链接