1.ldflags
解析:如果要赋值的变量包含空格,需要用引号将-X后面的变量和值都扩起来。
flags="-X 'main.goversion=$(go version)'"
go build -ldflags "$flags" -x -o build-version main.go
2.go build编译时的附加参数
解析:
[1]-v:编译时显示包名
[2]-p n:开启并发编译,默认情况下该值为CPU逻辑核数
[3]-a:强制重新构建
[4]-n:打印编译时会用到的所有命令,但不真正执行
[5]-x:打印编译时会用到的所有命令
[6]-race:开启竞态检测
3.Docker build命令
解析:docker build命令用于使用Dockerfile创建镜像。
[1]--build-arg=[]
:设置镜像创建时的变量
[2]--cpu-shares
:设置CPU使用权重
[3]--cpu-period
:限制CPU CFS周期
[4]--cpu-quota
:限制CPU CFS配额
[5]--cpuset-cpus
:指定使用的CPU id
[6]--cpuset-mems
:指定使用的内存id
[7]--disable-content-trust
:忽略校验,默认开启
[8]-f
:指定要使用的Dockerfile路径
[9]--force-rm
:设置镜像过程中删除中间容器
[10]--isolation
:使用容器隔离技术
[11]--label=[]
:设置镜像使用的元数据
[12]-m
:设置内存最大值
[13]--memory-swap
:设置Swap的最大值为内存+swap,"-1"表示不限swap
[14]--no-cache
:创建镜像的过程不使用缓存
[15]--pull
:尝试去更新镜像的新版本
[16]--quiet, -q
:安静模式,成功后只输出镜像 ID
[17]--rm
:设置镜像成功后删除中间容器
[18]--shm-size
:设置/dev/shm的大小,默认值是64M
[19]--ulimit
:Ulimit配置。
[20]--tag, -t
:镜像的名字及标签,通常name:tag或者name格式可以在一次构建中为一个镜像设置多个标签。
[21]--network
:默认default。在构建期间设置RUN指令的网络模式
4.systemctl daemon-reload
解析:重新加载某个服务的配置文件,如果新安装了一个服务,归属于systemctl管理,要是新服务的服务程序配置文件生效,需重新加载。
5.docker build使用http_proxy
解析:
docker build \
--build-arg http_proxy=http://10.188.61.2:8118 \
--build-arg https_proxy=https://10.188.61.2:8118 \
6.Go编程测试
解析:
[1]Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码。
[2]单元测试,是指对软件中的最小可测试单元进行检查和验证。
[3]单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
7.go vet
解析:vet是golang中提供的语法检查工具,可以检查出package或者源码文件中一些隐含的错误。
8.go fmt命令
解析:
[1]go fmt命令会按照Go语言代码规范格式化指定代码包中的所有Go语言源码文件的代码,所有Go语言源码文件即包括命令源码文件、库源码文件和测试源码文件
[2]当代码包还有子代码包时,子代码包中的Go语言源码文件是不包含在内的
[3]go fmt命令只会格式化被直接保存在指定代码包对应目录下的Go语言源码文件
9.gofmt命令
解析:Golang的开发团队制定了统一的官方代码风格,并且推出了gofmt工具[gofmt或go fmt]来帮助开发者格式化他们的代码到统一的风格。
[1]-l:仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。而不是把改写后的全部内容都打印到标准输出。
[2]-w:把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。
[3]-r:添加形如"a[b:len(a)] -> a[b:]"的重写规则。如果需要自定义某些额外的格式化规则,就需要用到它。
[4]-s:简化文件中的代码。
[5]-d:只把改写前后的内容的对比信息作为结果打印到标准输出。而不是把改写后的全部内容都打印到标准输出。命令程序将使用diff命令对内容进行比对。在Windows操作系统下可能没有diff命令,需要另行安装。
[6]-e:打印所有的语法错误到标准输出。如果不使用此标记,则只会打印每行的第1个错误且只打印前10个错误。
[7]-comments:是否保留源码文件中的注释。在默认情况下,此标记会被隐式的使用,并且值为true。
[8]-tabwidth:此标记用于设置代码中缩进所使用的空格数量,默认值为8。要使此标记生效,需要使用“-tabs”标记并把值设置为false。
[9]-tabs:是否使用tab来代替空格表示缩进。在默认情况下,此标记会被隐式的使用,并且值为true。
[10]-cpuprofile:是否开启CPU使用情况记录,并将记录内容保存在此标记值所指的文件中。
10.docker run命令
解析:创建一个新的容器并运行一个命令。
11.docker run -rm
解析:执行docker run命令带–rm命令选项,等价于在容器退出后,执行docker rm -v。
12.docker run中的privileged参数
解析:docker应用容器获取宿主机root权限。
13.Alpine Linux
解析:Alpine Linux是一个面向安全应用的轻量级Linux发行版。它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时还提供了自己的包管理工具apk。
14.dockerfile基本组成部分
解析:
[1]基础镜像信息:FROM
[2]维护者信息:MAINTAINER
[3]镜像操作指令:RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME、ENV等
[4]容器启动时执行指令:CMD、ENTRYPOINT
15.docker-compose up -d
解析:启动所有容器,-d将会在后台启动并运行所有的容器。
16.docker-compose -f docker-compose.yml up -d
解析:-f指定使用的compose模板文件,默认为docker-compose.yml,可以多次指定。
17.docker-compose down
解析:停用移除所有容器以及网络相关。
18.docker-compose logs
解析:查看服务容器的输出。
19.docker-compose ps
解析:列出项目中目前的所有容器。
20.docker-compose pull
解析:拉取服务依赖的镜像。
21.docker-compose restart
解析:重启项目中的服务。
22.docker-compose rm
解析:删除所有[停止状态的]服务容器。推荐先执行docker-compose stop命令来停止容器。
23.docker-compose run ubuntu ping docker.com
解析:在指定服务上执行一个命令。
24.docker-compose start
解析:启动已经存在的服务容器。
25.docker-compose stop
解析:停止已经处于运行状态的容器,但不删除它。
参考文献:
[1]docker build:https://docs.docker.com/engine/reference/commandline/build/
[2]Docker run命令:https://www.runoob.com/docker/docker-run-command.html
[3]Dockerfile命令详解:https://www.cnblogs.com/yanh0606/p/11360936.html