在上一集Day 13:Docker的逆襲(Docker’s Revenge)(上),你想起崔尼蒂之前說過的,可以用docker run
指令來建立container
並執行。於是你試著輸入以下指令:
$ docker run deusexmachina/sentinellib:destroyer
執行這個指令後,你發現終端機上沒有任何反應,只是一直停在那裡。你覺得很奇怪,難道這個image有問題嗎?還是需要加上什麼參數或指令才能讓它運作?
你參考了Docker 基本操作:Container (1)這篇解說後,你想要查看這個image的詳細資訊,看看有沒有什麼提示或說明。你用docker inspect
指令來查看這個image的元數據metadata
,如下:
$ docker inspect deusexmachina/sentinellib:destroyer
查看結果後,你接著看了Docker 基本操作:Container (2)這篇文章,研究image的特別設定和屬性,例如:
"Cmd": ["python", "destroyer.py"]
: 這個表示這個image執行時會呼叫python來執行destroyer.py
這個檔案。這個檔案可能就是用來控制烏賊機器人自毀的程式碼。
"Env": ["SENTINEL_ID=ALL", "SENTINEL_PASSWORD=202304011642"]
: 這個表示這個image執行時會設定兩個環境變數(environment variable)
,分別是SENTINEL_ID
和SENTINEL_PASSWORD
。這兩個變數可能就是用來連接和控制烏賊機器人的識別碼和密碼。
"ExposedPorts": {"8080/tcp": {}}
: 這個表示這個image執行時會開啟8080號埠(port),並使用TCP協定(protocol)。這個埠可能就是用來和烏賊機器人溝通和傳送指令的通道。
你嘗試了各種可能的docker run指令,但都沒有成功地使用deusexmachina/sentinellib:destroyer
這個image來控制烏賊機器人自毀。你發現這個image可能有一些隱藏的機制和保護措施,讓你不能使用它。你開始懷疑這有可能是AI大帝故意設計了這個image,用來引誘你們步入他的設下的陷阱。
你對著耳機說:「我覺得這個image有問題,它好像不能讓烏賊機器人自毀,可能有什麼別的目的。我怕我們被AI大帝騙了,他可能在這個image裡面埋了什麼後門或病毒,只要我們執行它,就會讓AI大帝得到我們的位置之類的。」
崔尼蒂和莫菲斯在耳機那一端說:「不可能吧,AI大帝怎麼可能知道我們從他的倉庫裡面偷這個image?而且我們也沒有連到任何網路或系統上,他怎麼追蹤我們?」
「我猜他有想到我們會偷他的image,所以他故意設陷阱等我們上鉤。感覺他根本不在乎什麼烏賊機器人自毀,他等我們想到『烏賊機器人自毀』這個想法後,將計就計,設下陷阱引我們上鉤。」
「你的懷疑可能是對的,AI大帝可能真的在這個image裡面設了一些陷阱,用來對付我們。我們不能再浪費時間在這個image上了,我們要想別的辦法來對付他。」