--- tags: Other --- # Docker [TOC] - 不用開機,啟動速度 > VM - 不用煩惱複雜的環境,直接 pull image,作業系統全搞定 - 要給環境變數、設定檔案路徑一切都隨心所欲 - 用最簡單的方式,執行你的 service - 拿別人寫好的 Image,寫 Dockerfile 組成你想要的 Image,一層一層疊起來,快速方便  ## 指令  指令分為四大類: * Linux 系統相關指令 * Docker Registry 相關指令 * Image 相關指令 * Container 相關指令 ### Linux 系統相關指令 (TODO: 進階) * `$ docker info` **列出和系統相關的資訊** 如 Image 數、Container 數、檔案系統目錄、使用 Linux 版本、CPU 及記憶體等。用來檢查系統是否能正確執行 Docker 所有指令。 * `$ docker version` **列出目前 Docker 的版本** 以及 Go 語言的版本等。 ### Docker Registry 相關指令 * `$ docker login/logout [registry]` **登入登出** 如果 registry 留空,則自動指向 [Docker hub](https://hub.docker.com/)。 * `$ docker search` **搜尋 Image** `-s` 可以指定多少 stars 以上的 Image。 ### Image 相關指令 * `$ docker images` **列出所有的 Image** 參數 `-q` 只列出 ID,`-a` 列出完整的層次資訊。 * `$ docker build/hisotry` **建立** history 會列出製作的每一步過程。 * `$ docker pull` **下載** `$ docker push` **上傳** * `$ docker save -o [*.tar] [image]` **匯出** `$ docker load --input [*.tar]` **匯入** 如果想要和其它人交換時,不想上傳到 Docker Hub,也不想自己架設私有 Docker Registry,就可以用這兩個方式存成 **tarball** 格式及匯出。 * `$ docker rmi [image id]` **刪除本機中存放的 Image** 如果有容器還在使用這個 Image 則無法刪除,但可以下 `-f` 參數強迫刪除。 * `$ docker tag` **標記別名** 一個 Image 可以有很多不同的 tag name。 ### Container 相關指令 * `$ docker run` **建立 Container 並執行指令** `-it` 可以進入 Container 內部操作介面,`-rm` 結束後刪除 Container,`-d` 背景執行。 * `$ docker rm` **刪除** * `$ docker inspect` **檢查狀態** `$ docker ps` **查看使用狀態** `$ docker stats` **查看 CPU、記憶體及網路使用** `$ docker top` **查看在主系統中的記憶體使用** `$ docker dip/dpid` **查看 IP/pid** * `$ docker exec` **在外部向 Container 內執行指令** `$ docker exec -it [container] bash` **進入 Container Shell** 更多指令:[全面易懂的 Docker 指令大全](https://joshhu.gitbooks.io/dockercommands/content/Containers/ContainersBasic.html) ## 容量 ```shell $ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 127 6 22.97GB 22.3GB (97%) Containers 7 4 4.125MB 84.42kB (2%) Local Volumes 173 3 32.75GB 32.58GB (99%) Build Cache 0 0 0B 0B ``` 大掃除 ```shell $ docker system prune WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all dangling build cache $ docker system prune -a ← 清除更乾淨,沒有 container 使用的 image 全部刪光 WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all images without at least one container associated to them - all build cache ``` ## network Container 間互連時會連不到,可以用 `http://docker.for.mac.localhost/` 來取代 `localhost` 戳到。 ## can't login in Mac 有發生無法 login 的狀況,鑰匙圈存取把先鎖定再解鎖即可。  ## subsitution command `CMD` 沒有辦法跑 subsitution command,可以用 bash 來解: ```dockerfile CMD ["bash", "-c", "echo $(date)"] ``` ## 參考資料 * [全面易懂的 Docker 指令大全](https://joshhu.gitbooks.io/dockercommands/content/index.html)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up