Docker 常用指令
介紹基本 Docker 操作常用指令
一些 Docker 上常用的指令和相關參數使用方法
實際使用上一定不只這些指令
服務基本指令
docker stats 顯示容器的資源使用統計
docker start 啟動一個或多個停止的容器
docker stop 停止一個或多個正在運行的容器
docker restart 重啟一個或多個容器
Log 常用指令
$ docker logs [OPTIONS] CONTAINER
Options:
--details 顯示詳細資料
-f, --follow 追蹤即時 log
--since string 顯示自某個 timestamp「之後」的 log,或相對時間,如42m(即42分鐘)
--tail string 從 log 末尾顯示多少行內容, 默認是all
-t, --timestamps 顯示時間戳
--until string 顯示自某個 timestamp「之前」的 log,或相對時間:如42m(即42分鐘)
使用範例
查看某個時間之後的 log
$ docker logs -t --since="2018-02-08T13:23:37" {CONTAINER_ID}
顯示某個時間後的 log,且只要最後 100 行
$ docker logs -f -t --since="2018-02-08" --tail=100 {CONTAINER_ID}
查看最近 30 分鐘的 log
$ docker logs --since 30m {CONTAINER_ID}
查看某個時間區間內的 log
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
執行容器
從本地環境的 image 建立 container
如果不存在從 repository 訪問,private repo 必須要有「登入」行為
image的格式可以為[IMAGE NAME]:[TAG]
docker run
範例:
# 執行nginx
docker run -idt nginx
# 執行nginx並且暴露port為8080
docker run -idt -p 8080:80 nginx
# 執行nginx在8080,在失敗的時候會自動重啟動
docker run -idt -p 8080:80 --restart on-failure nginx
# 執行nginx,結束後移除
docker run --rm -idt nginx
常用到的 flag
`-d` detach 將 container 置於背景執行
`-i` interactive 維持 STDIN,可互動
`-t` 提供 tty 允許 container 使用 tty
`-p` expose socket 對外:對內 port (ex -p 8080:80) `-p Host Port:Docker Port`
`--restart` 失敗重啟(always-default, none, on-failure)
`--rm` 關閉後 container 自動消滅,若不刪可能會不斷累積,即使已經死掉了
container 相關指令
列出所有活著的容器
docker ps
列出所有活的死的容器
docker ps -a
進到已存在、執行中的 container 執行指令
docker exec -ti nginx bash
取得 container 或是 image 的 Metadata
docker inspect {container name}
刪除 docker container
docker rm [CONTAINER]
image 相關指令
列出所有 image
docker images
刪除指定 image
docker rmi [IMAGE]
如果對外開放要給別人用怎麼辦
docker run -i -t -d -p 80:80 nginx
如果服務遇到意外中斷
docker run -i -t -d -p 80:80 --restart always nginx
如果要連node.js
docker run -i -d -t -p 80:80 --link node nginx
Volume 相關指令
列出所有 volume
docker volume ls
清除指定 volume
docker volume rm [OPTIONS] VOLUME [VOLUME...]
清除「全部」volume
docker volume prune
其他指令
docker build
從 Dockerfile 建立 docker image
-f
手動指定 Dockerfile 名稱
# 在目前的資料夾建立image,來源是Dockerfile
docker build . -t image-name
# 在目前的資料夾建立image,來源是Dockerfile-alt
docker build . -t image-name -f Dockerfile-alt
docker push / pull
將 docker image 從 repository 上拉/推上去
要先登入 docker login
docker login
登入 docker repository