D&K 課程筆記7 Multi-Command Container

Multi-Command Container

ZONGRU Li
Oct 5, 2020

由前面介紹image建立之初就已經綁定了Running Command

但是例如DataBase這樣的程式,在一般操作下

除了一開始執行程式運行外,後續想對DB做額外操作,就需要Multi-Command

接下來示範利用docker運行簡單的DataBase->redis

首先透過docker直接pull並運行redis,執行:

docker run redis

等pull完並運行

等到出現以下畫面,就表示redis開始運行(此畫面只能放著)

此時再開啟另一個視窗來嘗試對上述運行中redis下指令:

docker exec -it <ContainerId> <Command>

首先取得ContainerID,執行docker ps指令

放大一點...

執行上述的指令來對redis做操作,進入到redis-cli介面

docker exec -it fb98d9d9e302 redis-cli

就進入到redis操作介面了

此時就可以對redis DB做簡單操作EX:

要離開redis操作只要ctrl+c

原本image只能單純建立出包含運行redis-server的Container

透過上述的docker exec -it <ContainerID> <Command>

可以做到如下操作

另外試著捨棄指令中的-it會看到如下效果(會立即離開redis-cli)

一個進去就離開的概念!

首先先記得,Container機制都是建立在Linux

Linux任何程式操作都有三個溝通的Channel-(STDINSTDOUTSTDERR)

透過STDIN將執行的指令(set get之類)送給redis-cli

STDOUT將redis-cli運作過程的完整訊息送出並顯示

STDERR則是將任何錯誤顯示出來

所以上述的-it其中i指的是將訊息送進STDIN

但是t則是將OUT訊息印出前完整化

所以可以做個示範不帶t

會看到比較不完整的顯示

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet