收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 c113

一起學Docker27:如何在容器重建後,仍舊保留之前的bash歷史?


字體大小:
2021年10月26日 -
:     
 

矻矻來福Krave

bash 命令行歷史可以讓我們快速重複之前使用過的命令,也可以檢查之前輸入的命令是否存在什麼問題。你只需要在命令行終端,按向上 ↑ 箭頭按鈕就能查看 bash 歷史。可以說是非常好用的功能。但是重新構建容器的話,或者切換會話的話,之前的歷史記錄就都丟失了。不過辦法總比困難多。今天就來說一說,怎樣可以做到,即便是重建容器,仍舊能保留 bash 歷史。

首先,更新 Dockerfile ,使得每次 bash 中使用命令,都會更新歷史,並把歷史保存在持久化的路徑中。

如果你是 root 用戶,可以這樣更新 Dockerfile :

如果你是 非root 用戶,可以這樣更新 Dockerfile 。

將 user-name-goes-here 替換成你容器中 非root用戶 的用戶名。

整個邏輯是:設置 PROMPT_COMMAND 環境變量,設為:展示所有 ( all 即 -a )歷史。然後將 HISTFILE 變量設為存放歷史記錄的路徑。如果需要,再創建 /commandhistory 路徑以及 .bash_history 文件,設置文件的權限以便用戶有權寫入文件。最後,把這段命令片段寫入用戶的 .bashrc 文件。這樣每次啟動容器,都會執行這個代碼片段。

接著添加本地卷來存儲命令行歷史。這一步會根據你使用 Dockerfile 或 image,還是使用 Docker Compose 而有所不同。

如果使用的是 Dockerfile 或 image:

在 devcontainer.json 文件中,使用 mounts 屬性:

如果使用的是 Docker Compose :

更新或擴展你的 docker-compose.yml 文件,針對目標服務,做如下修改:

最後,為了讓所做的修改能夠生效,如果已經構建過容器,並且已連接容器,可以在 Command Palette 中運行 Remote-Containers: Rebuilld Container 命令;如果沒有,則運行 Remote-Containers: Open Folder in Container 命令。

之後,無論你怎麼重構容器,之前輸入過的命令行歷史都會被保留下來。歡迎關注我的賬號,我將持續更新。我們下期,不見不散。

  大家在看    
船要危了?獨行俠&快船6戰客隊取勝 歷史

船要危了?獨行俠&快船6戰客隊取勝 歷史

濟南有座小華山,是當地的一座道教名山,人文歷史故

濟南有座小華山,是當地的一座道教名山,人文歷史故

戰爭爆發前有哪些預兆?已被歷史驗證,我國人民需高

戰爭爆發前有哪些預兆?已被歷史驗證,我國人民需高

機器人當評委 杜絕藝考暗箱操作 藝考季“割麥子”

機器人當評委 杜絕藝考暗箱操作 藝考季“割麥子”

張江園區迎來首家外資企業「浦東歷史上的今天:12

張江園區迎來首家外資企業「浦東歷史上的今天:12

濟寧第一高樓通信大廈即將成為歷史,太白湖新區將成

濟寧第一高樓通信大廈即將成為歷史,太白湖新區將成

36歲的老漢,C羅打破尤文124年球隊歷史紀錄,

36歲的老漢,C羅打破尤文124年球隊歷史紀錄,

票房百億,傲視華夏,陳思誠導演創造歷史

票房百億,傲視華夏,陳思誠導演創造歷史

人真能徒手打死豹子?歷史上這3位罕見成功者,都用

人真能徒手打死豹子?歷史上這3位罕見成功者,都用

(歷史講壇)7.13班徐子夫《天下透明——大明第

(歷史講壇)7.13班徐子夫《天下透明——大明第