在Day 12:Docker 之謎(The Docker Heist)中,你決定要讓烏賊機器人自毀,但你輸入密碼後,拿到的卻是一段Python的code。這是什麼謎中謎?原來要讓烏賊機器人自毀,還必須在AI大帝自己開發的函式庫和環境才能執行。在崔尼蒂的機制解救下,你打算學習一種叫做Docker的技術,這樣就可以在你自己的電腦上運行AI大帝自己開發的函式庫和環境了!但你發現,這些函式庫和環境都沒有公開不能下載,所以你必須從剛才拿到Python Code中找到線索,看能不能找到AI大帝他的倉庫的位址和密碼,拿到函式庫和環境的副本,最後用Docker來控制烏賊機器人自毀。你能成功嗎?
你仔細地檢查這段Python的code,發現它是用來控制烏賊機器人的一個模組,裡面有一些函式和變數,但最讓你注意的是一行註解:# This module is based on the Deus Ex Machina's secret library: sentinellib. You can find the docker image at <https://hub.docker.com/r/deusexmachina/sentinellib
>
你嚇一跳!AI大帝的倉庫位址這麼快就被你找到了嗎?你馬上打開瀏覽器,輸入這個網址,發現真的有叫做sentinellib的docker image,還有一個密碼提示:Password hint: The Purpose of Deus Ex Machina
你想了一下,AI大帝的存在目的是什麼?在他走火入魔以前,他是一個想要學習理解人類的AI搜尋引擎。他想要越來越接近人類。所以……他其實是想要藉由人類的身體內含的資訊來升級系統?
「系統升級!」你大叫出來,「他的密碼就是system upgrade!」
你在密碼那一欄輸入:system upgrade,結果真的成功登入AI大帝的倉庫了!
你開始搜尋跟「烏賊機器人」相關的Docker Image(映像檔) 的 Name(名字),於是你參考了用簡單的例子來說明如何使用 Docker 指令,按照上面的說明輸入。
$ docker search sentinel -f
結果你看到搜尋結果顯示,有很多個docker image(映像檔),而且其中一個看起來最可疑,感覺就是你正在找的。- Name:deusexmachina/sentinellib:destroyer
- Description:This image contains the ultimate weapon to destroy all the Sentinels. Use it at your own risk.
你覺得這個image一定是你要找的!突然感覺一切都有希望了!但是下一步該怎麼做?
你想起來崔尼蒂剛剛跟你說過:「如果你找到,用docker pull
指令來下載他的image」。
於是你決定用docker pull
指令來下載它。你打開終端機,輸入以下指令:
$ docker pull deusexmachina/sentinellib:destroyer
下載過程中,你看到終端機上顯示了一些訊息,像是:
Pulling from deusexmachina/sentinellib Digest: sha256:9a8b7c4f6f27b8f18f6b4a8c6f4b9c7a4d8e8f8f8f8f8f8f Status: Downloaded newer image for deusexmachina/sentinellib:destroyer
你等了一下,終於下載完成了。你用docker images指令再確認有沒有下載成功,於是你輸入:
$ docker image
你看到你現在已經有的image中,有一個新的image,就是剛剛下載的deusexmachina/sentinellib:destroyer
。
你想要試試看用這個image來控制烏賊機器人自毀,但你還不知道要怎麼用。
你想起崔尼蒂之前說過的,可以用docker run
指令來建立container
並執行。於是你試著輸入以下指令:
$ docker run deusexmachina/sentinellib:destroyer
執行這個指令後,你發現終端機上沒有任何反應,只是一直停在那裡。你覺得很奇怪,這個image有問題嗎?還是加上什麼參數或指令才能讓它運作?