docker 裏幾個基本概念的簡單類比

這篇轉載別人的,類比的至關不錯,有助於理解docker

首先說明一下,這是一位 docker 新手對於 docker 的粗淺理解。若有不對還請諒解。我很早以前就嘗試過使用 docker,然而因爲術語的差別,致使我每次運行東西時都傻乎乎地建立了一個新的容器……如今感受用法終因而弄對了,因此整理一下,將其類比到 Linux 上的普通軟件的概念上。git

image

至關於軟件分發中的軟件(安裝)包。docker

Dockerfile

跟 PKGBUILD 相似,是用於製做一個 image 的打包腳本。用 docker build -t name:tag . 就能夠製做。ssh

container(容器)

一個容器就像是一個安裝好了的軟件包。該軟件已經準備好,隨時能夠運行了。ui

docker run

「安裝」指定的 image。也就是從 image 製做出容器來,順帶着進行首次運行。若是反覆使用,會把同一個軟件給安裝屢次。code

docker start

就像是「運行」一個已經安裝好的軟件,容器跑起來了。以前容器的狀態(文件的修改)也會生效。it

docker ps

列出運行中或者已安裝(帶 -a 參數)的軟件們。前者和 UNIX 命令 ps 相似,後者則沒什麼類似之處了。ast

docker exec

在正在運行的軟件的環境內執行命令。有點相似於 ssh。test

repository

跟 Linux 的包含衆多軟件的軟件源並不同。這個東西跟軟件名相似,用於標識爲特定功能的 image 集。發佈出來的 repository 名的格式一般是 owner/name,跟 GitHub 差很少的。容器

tag

軟件的版本,跟什麼 lite、pro、beta 之類區分相似。它並非用於分類的標籤,也不是 git 中對於指定版本的不變的稱呼。它更像是 git 的分支在某些狀況下的做用,好比 latest tag 就跟 git 倉庫的 master 分支同樣,老是指向最新的版本。
我通過以上這樣的映射以後,docker 理解起來就容易多了,行爲也更符合預期。打包

相關文章
相關標籤/搜索