同步自個人博客hxysayhi
內容目錄
- 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 的區(qū)別等姊扔,可參考:
- 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 拉取指定架構的鏡像
- 容器技術與虛擬機技術的區(qū)別扎唾,是否對宿主機架構、指令集直接依賴
虛擬機技術在宿主機上通過虛擬化技術模擬硬件設備,虛擬機運行在虛擬化層之上存和,仿佛自己運行在物理機上一般骗村。每臺虛擬機有自己的內核,有自己的操作系統(tǒng)在運行枣耀。我們可以通過虛擬化技術虛擬化出與底層不同架構的硬件,比如在x86平臺虛擬化ARM平臺羹唠,運行ARM架構的操作系統(tǒng)奕枢。比如這篇文章介紹了如何通過Qemu來實現(xiàn)在x86平臺模擬運行ARM系統(tǒng)娄昆。
ref:https://cloud.tencent.com/developer/article/1823083
容器本質上是有特殊限制的進程,依賴的是宿主機內核缝彬,宿主機操作系統(tǒng)萌焰。因此盡管容器技術可以做到一處打包處處運行的便捷性,但是需要確保運行的鏡像指令集與宿主機操作系統(tǒng)一致谷浅。
因此我們需要使用與宿主機具有相同架構的鏡像進行使用扒俯。
關于虛擬機技術和容器技術的演進、差別的更多信息可以在kubernetes in action查看學習一疯。
- 多架構支持
docker鏡像可以支持多架構撼玄,也就是說一個鏡像可以有不同的架構、不同的操作系統(tǒng)的變體墩邀。當我們運行一個支持多架構的鏡像時掌猛,docker會自動選擇與宿主機的操作系統(tǒng)和架構契合的鏡像變體。
ref:https://docs.docker.com/desktop/multi-arch/
- docker pull 命令行拉取指定架構
我們也可以通過--platform
參數指定鏡像的系統(tǒng)和架構眉睹,或者通過指定鏡像的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
拉取之后慕蔚,可以用docker inspect
驗證一下鏡像架構。
3. vim塊模式進行批量操作
Ctrl + v 可以進入塊選擇模式斋配,進入塊模式后孔飒,可以進行批量插入、刪除艰争、替換等操作坏瞄。
- 進入塊模式,選取操作塊
- 光標定位到要操作的地方
- CTRL+v 進入“可視 塊”模式
- 移動光標選取要操作的行和列
- 批量插入(按列插入)
- 進入塊模式完成要塊選取
- shift + i (即大寫 I )進入輸入模式
- 輸入要批量插入的內容
- 按兩次 ESC 鍵甩卓,完成插入
- 批量刪除
- 在進入塊模式完成選擇后惦积,按d進行刪除
- 批量替換
- 進入塊模式,完成需要操作的行的選取
- 按“:”猛频,輸入s/待替換內容/替換內容/g,回車 蛛勉,完成替換
4. Nginx proxy_pass
通過proxy_pass
可以設置代理轉發(fā)鹿寻,將匹配到指定URI的內容轉發(fā)的代理的上游服務。
location /some_dir/ {
proxy_pass 上游服務;
}
而轉發(fā)時的URI是否包含匹配的前綴诽凌,取決于配置上游服務時毡熏,是否有 /
轉發(fā)不帶前綴:
location /some_dir/ {
proxy_pass http://some_server/;
}
如果配置時,以/
結束侣诵,則按如下規(guī)則轉發(fā):
http:// your_server/some_dir/ some_subdir/some_file ->
http:// some_server/ some_subdir/some_file
也就是, /some_dir/
被 /
替換痢法,將 /some_dir/some_subdir/some_file
變?yōu)?/some_subdir/some_file
.
轉發(fā)帶前綴:
location /some_dir/ {
proxy_pass http://some_server;
}
上游服務配置時不以/
結束狱窘,則按如下規(guī)則替換:
http:// your_server /some_dir/some_subdir/some_file ->
http:// some_server /some_dir/some_subdir/some_file
也就是, 按原URI傳遞,不進行替換變化财搁。
ref1:https://stackoverflow.com/questions/32542282/how-do-i-rewrite-urls-in-a-proxy-response-in-nginx
ref2: http://www.reibang.com/p/b010c9302cd0
5. docker latest標簽
docker 的 latest 標簽沒有什么特殊之處蘸炸,就是一個普通的標簽,只是我們通常約定將最新版本的鏡像打上 latest 標簽尖奔。當實際上有 latest 標簽的鏡像可能根本不是最新的鏡像搭儒,這只是一個約定,而沒有機制上的保證提茁。當我們進行操作時沒有指定標簽淹禾,docker 會自動加上 latest 標簽進行操作。
可以通過如下命令查看拉取的 latest 鏡像的真正版本:
docker image inspect the-image:latest | grep -i version
ref:
- https://www.hi917.com/detail/105.html
- https://linux.cn/article-4772-1.html
- https://www.cnblogs.com/junejs/p/12686766.html#:~:text=latest是默認的標簽,的標識茴扁,這是約定铃岔。
6. mac chrome強制刷新
- 普通刷新:command +r
- 強制刷新:command+shift+r
- 刪除cookie等:command+shift+del ,然后點擊 清除數據峭火,注意勾選選擇要清楚的選項
7. 命令行修改密鑰密碼
$ ssh-keygen -p
Enter file in which the key is (/Users/xxxx/.ssh/id_rsa):
Enter old passphrase:
Key has comment 'xxxxxxxxxxxxxx'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
同步自個人博客hxysayhi