回顧:上二文對Docker做了一些最基本介紹,主要講解相關小歷史與概念,及Docker的安裝與基本查看命令操作,相信大家對docker有了一些基本的瞭解。
本文將在安裝好的Docker環境下使用Docker命令行客戶端開始學習Docker常用指令與基本操作。
本小節的思維導圖如下:
Docker幫助命令
通過命令 docker command --help 或者docker help command更深入的瞭解指定的 Docker 命令使用方法。
示例:
docker help run/docker run –help (輸出的結果是一樣的)
docker version: 顯示Docker版本
docker info: 顯示Docker信息
Docker鏡像常用操作命令
羅列鏡像
docker images: 列出當前鏡像 docker images [OPTIONS] [NAME] 命令參數: -a, --all=false 顯示所有鏡像,包括中間生成的臨時鏡像 -f, --filter=[] 通過標籤過濾 (i.e. 'dangling=true') --no-trunc=false 不要截斷輸出 -q, --quiet=false 僅顯示容器ID docker images 顯示當前倉庫中的鏡像 docker images -a 顯示當前倉庫中的鏡像與臨時鏡像 docker images -a -q --no-trunc 顯示當前倉庫中的鏡像與臨時鏡像的ID,不截斷輸出
示例:
搜索鏡像
docker search: 在Docker Hub上尋找鏡像 docker search TERM 命令參數: --automated=false 使用Github或BitBucket的源代碼自動構建 --no-trunc=false 不要截斷輸出 -s, --stars=0 只顯示Star數量超過N的鏡像 例子: docker search --starts=10 nginx
以上圖中包含5個字段,意義如下:
NAME:表示鏡像名字,名稱不帶“/”表示官方發佈倉庫,否則代表是其他用戶二次發佈。
DESCRIPTION:表示鏡像描述信息
STARS:表示鏡像的收藏數,用戶可以登錄Docker Hub對鏡像進行收藏,這個數字類似github上的star,數量代表歡迎程度
OFFICIAL:官方標識,值為[OK]
AUTOMATED:表示是否自動構建,代碼託管在Github,代碼提交後自動構建鏡像
拉取鏡像
docker pull: 從遠程拉取鏡像 docker pull NAME[:TAG] (不加tag, 默認安裝最新版本) 例子: docker pull nginx:latest
此時如果執行ctrl + c將會中斷拉取鏡像。靜靜等待鏡像拉取完成,然後羅列本地鏡像將看到本地鏡像已經有了剛剛拉取的nginx鏡像,執行docker images。
此時如果執行ctrl + c將會中斷拉取鏡像。靜靜等待鏡像拉取完成,然後羅列本地鏡像將看到本地鏡像已經有了剛剛拉取的nginx鏡像,執行docker images。
以上圖中包含5個字段,意義如下:
REPOSITORY:表示鏡像倉庫
TAG:表示鏡像版本信息
IMAGE ID:表示本地唯一序列標識,默認顯示12位,實際長度是64位
CREATED:鏡像創建的時間,使用距離當前的時間來表示
SIZE:表示鏡像的大小
推送鏡像
docker push: 推送鏡像到遠程倉庫 docker push NAME[:TAG] 例子: docker push workdsz/nginx:latest
構建鏡像
docker build: 使用Dockerfile構建鏡像 docker build [OPTIONS] PATH|URL|- 命令參數: --force-rm=false 移除構建時生成的中間容器 --no-cache=false 構建鏡像時不使用cache -q, --quiet=false 不顯示容器的輸出 --rm=true 構建成功後,移除構建時生成的中間容器 -t, --tag="" 構建成功後,新建鏡像的名稱
鏡像打TAG
docker tag: 為鏡像加上標籤 docker tag [OPTIONS] IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG] 命令參數: -f, --force=false 強制打上標籤 例子: docker tag nginx:latest workdsz/nginx:1.13 給nginx:latest打上新TAG: workdsz/nginx:1.13
刪除鏡像
docker rmi 刪除一個或者多個鏡像 docker rmi IMAGE [IMAGE...] 命令參數: -f, --force=false 強制刪除鏡像 --no-prune 不要刪除未標記的父級 例子: docker rmi -f nginx:latest
Docker容器常用操作
創建並啟動容器
docker run: 在一個新的容器中執行命令 (CTRL-p CTRL-q 退出至後臺運行) docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 例子: docker run -i -t nginx:latest /bin/bash 啟動一個新的nginx容器 docker run --rm -i -t nginx:latest /bin/bash 建議新手測試加上--rm docker run -i -t --name "nginx-test" nginx:latest /bin/bash
查看容器進程
docker ps: 列出當前容器 docker ps [OPTIONS] 命令參數: -a, --all=false 顯示所有容器,包括當前沒有運行的容器 -f, --filter=[] 按條件過濾容器, 可選的過濾選項: exited= 容器的返回值 -l, --latest=false 顯示最新的一個容器 -n num 顯示最新的N個容器 --no-trunc=false 不要截斷輸出 -q, --quiet=false 僅顯示容器ID -s, --size=false 顯示容器大小 例子: docker ps 當前正在運行的容器 docker ps -a 當前正在運行或是停止的容器 docker ps -a -q --no-trunc 獲得當前所有容器的ID,不截斷輸出 docker rm $(echo $(docker ps -q --no-trunc) $(dockerps -a -q--no-trunc) | sed 's|\s|\n|g' |sort | uniq -u) 刪除當前不在運行狀態的容器ID,也可以把前面改成docker rm
進入容器
docker attach: 掛載正在後臺運行的容器到前臺 docker attach [OPTIONS] Container 例子: docker attach nginx
執行命令
docker exec -i -t nginx ls -l
停止容器
docker stop: 停止運行中的容器 (CTRL-d 強制退出, Exited (0)) docker stop [OPTIONS] CONTAINER [CONTAINER...] 命令參數: -t, --time=10 殺掉容器進程之前,等待的時間 例子: docker stop nginx
終止容器
docker kill: 殺掉一個運行中的容器 (Exited (-1)) docker kill [OPTIONS] CONTAINER [CONTAINER...] 命令參數: - s, --signal="KILL" 選擇向容器發出的Signal 例子: docker kill nginx
啟動容器
docker start: 重啟停止的容器 Docker start CONTAINER [CONTAINER...] 命令參數: -a,--attach=false 啟動容器並進入容器中 -i,--interactive=false 啟動容器並進入交互模式 例子: docker start nginx
重啟容器
docker restart: 重啟運行中的容器 docker restart [OPTIONS] CONTAINER [CONTAINER...] 命令參數: -t, --time=10 殺掉容器進程之前,等待的時間 例子: docker restart nginx
刪除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...] 命令參數: -f, --force=false 強制刪除容器(使用SIGKILL) -l, --link=false 刪除指定的鏈接,而不是基礎容器 -v, --volumes=false 移除與容器關聯的卷 例子: docker rm nginx 刪除容器 docker rm $(docker ps -a -q) 刪除所有容器
導出容器
docker export: 把容器系統文件打包並導出來,方便分發給其他場景使用。 docker export CONTAINER 例子: docker export nginx > nginx.tar 將nginx的最新鏡像打包為nginx.tar導入容器
導入容器
docker import: 加載容器系統文件 docker import URL|- [REPOSITORY[:TAG]] 例子: docker import nginx workdsz/nginx:latest docker import http://example.com/exampleimage.tgz cat exampleimage.tgz | docker import -exampleimagelocal:new