容器生命週期管理
Docker創建新容器並運行[run]
語法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明:
- -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
- -d: 後臺運行容器,並返回容器ID;
- -i: 以交互模式運行容器,通常與 -t 同時使用;
- -t: 爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
- --name="nginx-lb": 爲容器指定一個名稱;
- --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
- --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 設置環境變量;
- --env-file=[]: 從指定文件讀入環境變量;
- --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
- -m :設置容器使用內存最大值;
- --net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型;
- --link=[]: 添加鏈接到另一個容器;
- --expose=[]: 開放一個端口或一組端口;
實例:
使用docker鏡像nginx:latest以後臺模式啓動一個容器,並將容器命名爲yyflightNginx:
docker run --name yyflightNginx -d nginx:latest
執行完後可使用docker ps驗證容器是否成功運行
Dcoker start/stop/restart
docker start 容器名:啓動一個或多少已經被停止的容器
docker start yyflightNginx
docker stop 容器名:停止一個運行中的容器
docker stop yyflightNginx
docker restart 容器名:重啓容器
docker restart yyflightNginx
Docker殺死運行中的容器[kill]
docker kill :殺掉一個運行中的容器。
實例:
殺死運行中的nginx容器yyflightNginx
docker kill yyflightNginx
Docker刪除一個或者多個容器[rm]
語法:docker rm [OPTIONS] CONTAINER [CONTAINER...]
實例:
1、強制刪除容器 yyflightNginx001、yyflightNginx02
docker rm -f yyflightNginx001、yyflightNginx02
2、移除容器nginx01對容器db01的連接,連接名db
docker rm -l db
3、刪除容器nginx01,並刪除容器掛載的數據卷
docker rm -v nginx01
Docker創建新容器但不啓用[create]
語法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
實例:
使用docker鏡像nginx:latest創建一個容器,並將容器命名爲yyflightNginx001
docker create --name yyflightNginx001 nginx:latest
Docker容器暫停和恢復[pause/unpause]
docker pause :暫停容器中所有的進程
暫停數據庫容器db01提供服務:
docker pause db01
docker unpause :恢復容器中所有的進程
恢復數據庫容器db01提供服務:
docker unpause db01
容器操作
查看本地正在運行的容器[ps]
語法:docker ps [OPTIONS]
OPTIONS說明:
- -a :顯示所有的容器,包括未運行的。
- -f :根據條件過濾顯示的內容。
- --format :指定返回值的模板文件。
- -l :顯示最近創建的容器。
- -n :列出最近創建的n個容器。
- --no-trunc :不截斷輸出。
- -q :靜默模式,只顯示容器編號。
- -s :顯示總的文件大小。
docker ps
Docker查看容器中運行的進程信息[top]
docker top:查看容器中運行的進程信息,支持 ps 命令參數。
實例:
查看容器yyflightNginx的進程信息:
docker top yyflightNginx
Dcoker獲取容器的日誌[logs]
語法: docker logs [OPTIONS] CONTAINER
OPTIONS說明:
- -f : 跟蹤日誌輸出
- --since :顯示某個開始時間的所有日誌
- -t : 顯示時間戳
- --tail :僅列出最新N條容器日誌
實例:
跟蹤查看容器yyflightNginx的日誌輸出(幫你查看這個容器在某個時間段被執行了什麼操作):
docker logs -f yyflightNginx
Docker列出指定的容器的端口映射[port]
docker port :列出指定的容器的端口映射,或者查找將PRIVATE_PORT NAT到面向公衆的端口。
實例:
查看容器yyflightNginx的端口映射情況:
docker port yyflightNginx
Docker info|version|status
Docker版本信息查看[version]
語法:docker version [OPTIONS]
OPTIONS說明:
- -f :指定返回值的模板文件。
docker version
查看Docker系統信息[info]
顯示 Docker 系統信息,包括鏡像和容器數。
docker info
Docker服務狀態查看[systemctl status]
systemctl status docker
Docker本地鏡像管理
查看本地鏡像列表[images]
語法:docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS說明:
- -a :列出本地所有的鏡像(含中間映像層,默認情況下,過濾掉中間映像層);
- --digests :顯示鏡像的摘要信息;
- -f :顯示滿足條件的鏡像;
- --format :指定返回值的模板文件;
- --no-trunc :顯示完整的鏡像信息;
- -q :只顯示鏡像ID。
docker images
Docker刪除本地一個或多少鏡像[rmi]
語法:docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS說明:
- -f :強制刪除;
- --no-prune :不移除該鏡像的過程鏡像,默認移除;
實例:
強制刪除本地鏡像nginx/ubuntu
docker rmi -f nginx/ubuntu
Docker給本地鏡像打標籤[tag]
docker tag : 標記本地鏡像,將其歸入某一倉庫。
語法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Docker鏡像打標籤在我們的實際開發中非常常用,比如說公司的項目每次開發都會發佈一個版本然後我們通過打標籤來區分不同版本,如果以後想要回滾版本就可以使用指定的標籤的鏡像來創建容器。
實例:
1、比如說我本地現在有一個nginx的鏡像:
docker images
2、我對nginx進行了開發,發佈第一個版本,我就可以通過對這個版本打標籤,打完標籤後生成新的鏡像:
docker tag nginx nginx:v001
Docker使用Dockerfile創建鏡像[build]
語法:docker build [OPTIONS] PATH | URL | -
OPTIONS說明:
- --build-arg=[] :設置鏡像創建時的變量;
- --cpu-shares :設置 cpu 使用權重;
- --cpu-period :限制 CPU CFS週期;
- --cpu-quota :限制 CPU CFS配額;
- --cpuset-cpus :指定使用的CPU id;
- --cpuset-mems :指定使用的內存 id;
- --disable-content-trust :忽略校驗,默認開啓;
- -f :指定要使用的Dockerfile路徑;
- --force-rm :設置鏡像過程中刪除中間容器;
- --isolation :使用容器隔離技術;
- --label=[] :設置鏡像使用的元數據;
- -m :設置內存最大值;
- --memory-swap :設置Swap的最大值爲內存+swap,"-1"表示不限swap;
- --no-cache :創建鏡像的過程不使用緩存;
- --pull :嘗試去更新鏡像的新版本;
- -q :安靜模式,成功後只輸出鏡像ID;
- --rm :設置鏡像成功後刪除中間容器;
- --shm-size :設置/dev/shm的大小,默認值是64M;
- --ulimit :Ulimit配置。
實例:
使用當前目錄的Dockerfile創建鏡像:
docker build -t w3xue/ubuntu:v1 .
使用URL github.com/creack/docker-firefox 的 Dockerfile 創建鏡像:
docker build github.com/creack/docker-firefox
Dcoker查看指定鏡像的創建歷史[history]
語法:docker history [OPTIONS] IMAGE
OPTIONS說明:
- -H :以可讀的格式打印鏡像大小和日期,默認爲true;
- --no-trunc :顯示完整的提交記錄;
- -q :僅列出提交記錄ID。
實列:
查看容器nginx的創建歷史記錄:
docker history nginx
鏡像倉庫相關
登錄/退出Docker鏡像倉庫[login/logout]
docker login : 登錄到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub
docker logout : 登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub
語法:
docker login [OPTIONS] [SERVER] docker logout [OPTIONS] [SERVER]
OPTIONS說明:
- -u :登陸的用戶名
- -p :登陸的密碼
實例:
登陸到Docker Hub:
docker login -u 用戶名 -p 密碼
登出Docker Hub:
docker logout
Docker從鏡像倉庫中拉取或者更新指定鏡像[pull]
語法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS說明:
- -a :拉取所有 tagged 鏡像
- --disable-content-trust :忽略鏡像的校驗,默認開啓
實列:
從Docker Hub下載最新的ubuntu鏡像
docker pull ubuntu
從Docker Hub下載repository爲ubuntu的所有鏡像
docker pull -a ubuntu
Docker將本地的鏡像上傳到鏡像倉庫[push]
docker push : 將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫
語法:docker push [OPTIONS] NAME[:TAG]
OPTIONS說明:
- --disable-content-trust :忽略鏡像的校驗,默認開啓
實例:
上傳本地鏡像nginx:v001到鏡像倉庫中:
docker push nginx:v001
查詢Docker Hub鏡像[search]
語法:docker search [OPTIONS] TERM
OPTIONS說明:
- --automated:棄用,只列出自動構建類型的鏡像。
- --filter , -f:基於給定條件過濾輸出。
- --format:使用模板格式化顯示輸出。
- --limit:Max number of search results ,默認值25。
- --no-trunc:禁止截斷輸出。
- --stars , -s:棄用,只顯示收藏數不小於幾顆星的鏡像,移到--filter中使用。
從Docker Hub查找所有鏡像名包含redis,並且收藏星數大於10的鏡像
docker search --filter stars=10 redis
從Docker Hub查找所有鏡像名包含redis的鏡像
docker search redis