Below you will find pages that utilize the taxonomy term “Notes”
学海拾贝-20220227-20220228
问题目录
- git merge 时不对message进行确认
- Windows上用户名不区分大小写
- 蓝绿部署、红黑部署、灰度发布
- docker no space left on device
- LVM进行逻辑卷扩容
1. git merge 时不对message进行确认
在进行 git merge 时会默认进入一个编辑 merge message 的编辑交互中,但是我们有时不希望进行内容变更或不希望进行交互编辑。
如果是不进行内容变更,可以使用 --no-edit :
git merge test-branch --no-edit
如果是不希望进行交互编辑,可以使用 -m 在 merge 时指定 message 内容:
git merge test-branch -m "the message that you want to commit"
ref: https://git-scm.com/docs/git-merge
2. Windows上用户名不区分大小写
Windows 下的用户名不区分大小写;但是,密码区分大小写。
linux 下的用户名区分大小写。
3. 蓝绿部署、红黑部署、灰度发布
-
蓝绿部署
在蓝绿色部署中,维护两套服务:“蓝色”服务和“绿色”服务。在任意时刻,只有一套服务被用于处理请求。另一套服务处于闲置状态。
进行新版本发布时,我们可以先将闲置状态的服务进行升级,再将生产流量从另一套服务切换过来。蓝绿没有什么特殊含义,只是为了便于区别和表述,我们可以将工作中的服务环境称为蓝色环境,而将闲置环境称为绿色环境。将绿环境部署新版本服务后,进行流量切换。一旦生产流量从蓝色完全转移到绿色,蓝色就可以在回滚或退出生产的情况下保持待机,也可以更新成为下次更新的模板。
ref:
-
红黑部署
与蓝绿部署类似,红黑发布也是通过两个集群完成软件版本的升级。
当前提供服务的所有机器都运行在红色集群 A 中,当需要发布新版本的时候,具体流程是这样的:
- 先在云上申请一个黑色集群 B,在 B 上部署新版本的服务;
- 等到 B 升级完成后,我们一次性地把负载均衡全部指向 B;
- 把 A 集群从负载均衡列表中删除,并释放集群 A 中所有机器。
这样就完成了一个版本的升级。
学海拾贝-20220221-20220227
内容目录
- docker run 覆盖原有entrypoint
- docker 拉取指定架构的镜像
- vim块模式进行批量操作
- nginx proxy_pass
- docker latest标签
- mac chrome强制刷新
- 命令行修改密钥密码
1. docker run 覆盖原有entrypoint
使用 --entrypoint
docker run --entrypoint <new command> [docker_image]
以命令行交互模式运行容器进行交互操作:
docker run -it --entrypoint /bin/bash [docker_image]
更多信息,比如对于 entrypoint 和 cmd 的区别等,可参考:
- https://docs.docker.com/engine/reference/run/#entrypoint-default-command-to-execute-at-runtime
- https://phoenixnap.com/kb/docker-run-override-entrypoint
- https://yeasy.gitbook.io/docker_practice/image/dockerfile/entrypoint
- https://www.bmc.com/blogs/docker-cmd-vs-entrypoint/
2. docker 拉取指定架构的镜像
- 容器技术、虚拟机技术、模拟环境,各项技术上运行的程序对宿主机架构、指令集、宿主机内核的依赖情况
虚拟机技术在宿主机上通过虚拟化技术模拟硬件设备,虚拟机运行在虚拟化层之上,仿佛自己运行在物理机上一般。每台虚拟机有自己的内核,有自己的操作系统在运行。
通过模拟技术可以通过软件模拟出与底层不同架构的硬件,实际上有点像是在做翻译,比如在x86平台模拟ARM平台环境,再在这个模拟环境中运行ARM架构操作系统的虚拟机。比如这篇文章介绍了如何通过Qemu来实现在x86平台模拟运行ARM系统。
ref:https://cloud.tencent.com/developer/article/1823083
容器本质上是有特殊限制的进程,依赖的是宿主机内核,宿主机操作系统。因此尽管容器技术可以做到一处打包处处运行的便捷性,但是需要确保运行的镜像指令集与宿主机操作系统一致。
因此我们需要使用与宿主机具有相同架构的镜像进行使用。
关于虚拟机技术和容器技术的演进、差别的更多信息可以在kubernetes in action查看学习。
- 多架构支持
docker镜像可以支持多架构,也就是说一个镜像可以有不同的架构、不同的操作系统的变体。当我们运行一个支持多架构的镜像时,docker会自动选择与宿主机的操作系统和架构契合的镜像变体。
ref:https://docs.docker.com/desktop/multi-arch/
- docker pull 命令行拉取指定架构
我们也可以通过--platform 参数指定镜像的系统和架构,或者通过指定镜像的sha256值(摘要)来使用指定的镜像。
方法一:使用--platform 参数:
docker pull --platform linux/arm64 alpine:latest
方法二:指定镜像的sha256值(摘要)
首先列出所有支持的架构,然后指定sha256值(摘要)进行拉取。例如:
# list all supported architectures (manifest):
$ docker manifest inspect ckulka/multi-arch-example
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2200,
"digest": "sha256:6eaeab9bf8270ce32fc974c36a15d0bac4fb6f6cd11a0736137c4248091b3646",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2413,
"digest": "sha256:f02e0fd2918a894ecd49d67b802c22082dc3c6424f6566e1753a83ba833b0993",
"platform": {
"architecture": "arm",
"os": "linux",
"variant": "v5"
}
},
...
# pull by digest, e.g. arm arch (pulled on linux machine):
$ docker pull ckulka/multi-arch-example@sha256:f02e0fd2918a894ecd49d67b802c22082dc3c6424f6566e1753a83ba833b0993
ref:https://stackoverflow.com/questions/60114854/pull-docker-image-for-different-architecture/60116565