iT邦幫忙

0

Docker學習筆記01

  • 分享至 

  • xImage
  •  

安裝軟體議題 >> 下載安裝檔->執行安裝檔->出現錯誤->debug ------ Docker能解決類似的問題

容器都是運行在系統為Linux的VM上,無論你的個人裝置是mac還是windows,docker上的container環境永遠都是Linux VM.

講解:docker server收到docker client的command之後會去image cache中找尋image,若沒有則會去dockerhub上找,接著在平台上抓取image後,將image的fs snapshot放到container中,讓container準備運行.接著,一切就緒後container就會去執行image中的startup command.

當您創建一個Docker映像檔(Image),Docker會在內部創建一個可讀寫的容器層(Container Layer)。這層是基於Dockerfile定義的內容和您在Dockerfile中添加的任何檔案或文件所建立的。在容器層之上,還有一個唯讀的映像層(Image Layer),它包含了Dockerfile所指定的基礎映像檔和其他任何指定的映像檔的內容。

Docker映像檔包含了Docker容器所需的一切內容,包括應用程式和所有相關的依賴項、檔案、庫等。當Docker映像檔被運行為Docker容器時,Docker將使用唯讀的映像層來建立容器的檔案系統。

在運行Docker容器時,Docker將基於該映像層建立容器的檔案系統。可以將Docker映像檔看作是容器檔案系統的模板。Docker使用文件系統快照(Filesystem Snapshot)的概念來儲存和管理這些容器檔案系統。當容器被啟動時,Docker會創建一個可讀寫的層來保存所有更改。此時,Docker會將容器檔案系統中所有的寫操作重定向到可讀寫的層。

啟動命令(Startup Command)是指Docker容器啟動時運行的命令。您可以在Dockerfile中使用CMD或ENTRYPOINT指令來定義容器的啟動命令。 CMD指令會指定一個預設的命令或引數,當您啟動容器時,如果未提供命令和引數,Docker將使用CMD指定的命令和引數。而ENTRYPOINT指令則允許您指定容器啟動時執行的命令,以及提供附加引數。使用ENTRYPOINT指令的容器可以像命令行工具一樣運作,因此您可以使用容器來執行腳本、服務、應用程式等。

總結來說,Docker映像檔中的文件系統快照是容器檔案系統的模板,而啟動命令是指定Docker容器啟動時運行的命令。

每個運行的Container有三個channel: STDIN、STDOUT、STDERR
-i 將任何我在CMD輸入的文字都送到STDIN channel中
-t 確保將所有你輸入的文字以正確的形式出現在CMD當中

docker的獨立性: 容器在預設情況下都在各自獨立的環境不會自動連結.

(1) 顯示正在運行的容器 -> docker ps
(2) 顯示停止的容器 -> docker ps --all
(3) 顯示所有的容器 -> docker ps -a
(4) 創建及運行一個隨機產生的容器 -> docker run <image_name>
-run = 創建、運行一個容器
-image_name = 根據指定的image創建容器
-it :允許我們提供input給容器
-d : 讓容器運行在背景程序中

(5) 打造容器(隨機id) -> docker create <image_name> -> 回傳container_id
-create : 試著創造container
-image_name : 給該容器使用的映像檔名稱

(6) 運行容器(指定id) -> docker start <container_id> -> 容器開始運行
-container_id : 要啟動的container的id

(7) 刪除所有containers(已停止的、存放在快取的) -> docker system prune

(8) 查看容器運行日誌 -> docker logs <container_id>
-logs : 取得日誌
-container_id : 要查看的container其id

(9) 停止\刪除容器 -> docker stop|kill <container_id>
-stop:等事情做完再終止process
-kill:立即終止process

(10) 在容器中執行命令 -> docker exec -it 5341facfe redis-cli
-it讓我們可以在輸入command之後繼續輸入文字

(11) 直接輸入指令 -> docker exec -it <container_id> sh
-sh:代表的是一個被運行在Container的特定程式的名稱(shell),讓你可以輸入command,並讓指令被執行

(12) 結合(4)、(11) run -it <image_name> sh ->

啟動本地端資料庫 -> redis-server
用戶端操控資料庫 -> redis-cli

用docker啟動redis-server -> docker run redis
redis-server執行在container中


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言