[Docker] Docker 指令小抄
這篇會盡量紀錄 docker 常用指令。
Images 相關的指令
Images 可以當作是一種範本或是一個起始點,準備拿來建立 Container。
指令 | 說明 |
---|---|
docker build | 讀取 Dockerfiles 建立 Image。 |
docker images | 列出本地端的 Image |
docker pull | 從 Repository 下載 Image。 |
docker push | 發佈本地端的 Image 到遠端的 Repository。 |
docker tag | 對 Image 下 tag。 |
docker rmi | 刪除本地端 Image。 |
指令使用範例
- docker build . -t myapp -f Dockerfile
- 參數
-t
表示建立的 image 名稱。 -f
指定讀取的 Dockerfile 檔,若沒指定預設讀取 Dockerfile。
- 參數
- docker pull mcr.microsoft.com/dotnet/framework/aspnet
- docker push adamfreeman/exampleapp:changed
- docker tag apress/exampleapp:changed adamfreeman/exampleapp:changed
- docker rmi 0abb -f
- 0abb 為 Image 的 IMAGE ID , 在使用 docker images 可以看到
- 使用
-f
參數,可以連 Container 一起砍掉
列出指令的詳細用法 docker build --help
Dockerfile 相關指令
從 Dcoker hub 下載 base images 後,再透過 dockerfile 寫好執行腳本,就可以產生自己專案要執行的 image。
指令 | 說明 |
---|---|
FROM | 指定要 Pull 哪一個 Image |
WORKDIR | 指定 container 裡面的路徑 |
COPY | 複製本地端的檔案到 container 裡面 |
RUN | 執行某一個命令,且執行完後會建立新的 image。 通常用於在 container 下載套件 |
CMD | 指令可以被複寫的預設命令。 詳細請看下方 RUN vs CMD vs ENTRYPOINT 的說明 |
ENV | 設定環境變數 |
VOLUME | 建立一個放檔案的功能。 當 container 被砍掉重新啟動的時候,檔案還會存在。 |
ENTRYPOINT | container 被建立後所執行的指令 |
簡單的 Dockerfile 範例
- dockerfile
1 | FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 |
關於 RUN vs CMD vs ENTRYPOINT 的比較
Use RUN instructions to build your image by adding layers on top of initial image.
Prefer ENTRYPOINT to CMD when building executable Docker image and you need a command always to be executed. Additionally use CMD if you need to provide extra default arguments that could be overwritten from command line when docker container runs.
Choose CMD if you need to provide a default command and/or arguments that can be overwritten from command line when docker container runs.
Container 相關指令
Dcoker 可以從同一個 images 建立不同的 container。 而 container 就是一個可以執行的應用程式,且每一個container 之間都是互相獨立不影響的。
指令 | 說明 |
---|---|
docker create | 建立 container |
docker start | 執行 container |
docker run | 建立與執行 container |
docker stop | 停止 container |
docker rm | 刪除 container |
docker ps | 列出執行中的 container |
docker logs | 顯示執行中 container 的 log |
docker exec | 在 container 執行指令 |
docker cp | 複製本地端檔案到 Container |
Container 指令常用參數
指令 | 說明 |
---|---|
-e, --env | 設定環境變數 |
--name | 設定 container 的別名 |
--network | 設定 container 連線至 software-defined network |
-p, --publish | 設定 host system 與 container 內部 port 的對應 |
--rm | container 停止後會自動將 container 刪除 |
-v, --volume | 設定要使用哪一個 volume |
-d | 執行於背景模式 |
Volumes 相關指令
Volumes 可以讓資料存在 container 之後,這意味著當 container 被刪除或者是更新的時候,這些資料不會消失。
指令 | 說明 |
---|---|
docker volume create | 建立新的 volume |
docker volume ls | 列出建立的 volume |
docker volume rm | 刪除 volume |
Docker Software-Defined Networks 相關指令
Software-Defined Networks 用在能夠讓 containers 之間能夠連線。
指令 | 說明 |
---|---|
docker network create | 建立一個 network |
docker network connect | 將 container 連線到一個 network |
docker network ls | 列出 network |
docker network rm | 刪除 network |
docker network prune | 移除沒有用到的 networks |
簡單的 Networks 指令範例
- bash
1 | docker network create backend |
延伸閱讀
[Docker network]
[Docker container command line]
[Docker command line]