Docker 經常使用命令和命令集結

經常使用命令

查看版本nginx

docker version

查看系統信息docker

docker info

顯示 Docker 系統信息,包括鏡像和容器數。
ubuntu

搜索鏡像bash

docker search keyword

從 Docker Hub 中搜索符合條件的鏡像。
post

拉取鏡像測試

docker pull imagename

從 Docker Hub 中拉取或者更新指定鏡像。
ui

列舉鏡像3d

docker images

查看當前已經下載完畢的鏡像
rest

刪除鏡像日誌

docker rmi imagename

強制刪除

docker rmi -f imagename

刪除多個鏡像

docker rmi image:latset postgres:lastet

刪除指定名字的鏡像

查看鏡像建立歷史

docker history imagename

查看指定鏡像的建立歷史

查看當前的容器

docker ps

啓動、中止、重啓、殺死指定容器

docker start containername
docker stop containername
docker restart containername
dcoker kill containername

啓動、中止和重啓一個或多個指定容器。

保存和加載鏡像狀態

docker save -i "debian.tar"
docker save > "debian.tar"

將指定鏡像保存成 tar 歸檔文件, docker load 的逆操做。保存後再加載(saved-loaded)的鏡像不會丟失提交歷史和層,能夠回滾。

docker load < debian.tar
docker load -i "debian.tar"

從 tar 鏡像歸檔中載入鏡像, docker save 的逆操做。保存後再加載(saved-loaded)的鏡像不會丟失提交歷史和層,能夠回滾。

docker export <container>
docker export nginx-01 > export.tar

將指定的容器保存成 tar 歸檔文件, docker import 的逆操做。導出後導入(exported-imported))的容器會丟失全部的提交歷史,沒法回滾。

cat export.tar  "p">| docker import - imported-nginx:latest
docker import http://example.com/export.tar

從歸檔文件(支持遠程文件)建立一個鏡像, export 的逆操做,可爲導入鏡像打上標籤。導出後導入(exported-imported))的容器會丟失全部的提交歷史,沒法回滾。

命令集結

Docker 命令集
  attach commit diff export history import insert kill login port   pull restart rmi save start tag version build cp events   help images info inspect load logs ps push rm run   search stop top wait

docker help:

  docker help [COMMAND]
  例: docker help run
   docker version: 顯示Docker版本
   docker info: 顯示Docker信息

docker attach: 掛載正在後臺運行的容器到前臺

  docker attach [OPTIONS] Container

docker run: 在一個新的容器中執行命令 (CTRL-p CTRL-q 退出至後臺運行)
  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

sudo docker run -i -t ubuntu:14.04 /bin/bash         啓動一個新的Ubuntu容器
sudo docker run --rm -i -t ubuntu:14.04 /bin/bash   建議新手測試加上 -—rm
sudo docker run -i -t --name "private_container" ubuntu:14.04 /bin/bash

docker ps: 列出當前容器
  docker ps [OPTIONS]
  命令參數:

-a, --all=false            顯示全部容器,包括當前沒有運行的容器
-f, --filter=[]               按條件過濾容器, 可選的過濾選項:
exited=<int> 容器的返回值
-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 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 logs: 顯示容器的日誌

docker logs CONTAINER
命令參數:
-f, --follow=false               等待容器後續的輸出(相似 tail -f)
-t, --timestamps=false     顯示時間戳
--tail="all"

sudo docker logs 7bb0e258aefe
sudo docker logs --timestamps=true 7bb0e258aefe
sudo docker logs --timestamps=true 7bb0e258aefe > 7bb0e258aefe.log
終端A:
sudo docker logs --follow 7bb0e258aefe
終端B:
sudo docker attach 708cc7ec0f23         (隨便執行一些命令能夠看到終端A會有實時輸出)

docker inspect: 顯示鏡像或容器的詳細信息

docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...]
  命令參數:
  -f, --format=""                  選擇輸出內容,–format="{{.NetworkSettings.IPAddress}}"

sudo docker inspect 7bb0e258aefe
sudo dockerinspect --format "{{.State.Pid}}" 7bb0e258aefe

docker stop: 中止運行中的容器 (CTRL-d 強制退出, Exited (0))

Docker stop [OPTIONS] CONTAINER [CONTAINER...]
  命令參數:
  -t, --time=10                    殺掉容器進程以前,等待的時間
  例子:

sudo docker stop 7bb0e258aefe

docker kill: 殺掉一個運行中的容器 (Exited (-1))

docker kill [OPTIONS] CONTAINER [CONTAINER...]
  命令參數:
  - s, --signal="KILL"          選擇向容器發出的Signal
  例子:
sudo docker kill 7bb0e258aefe

docker start: 重啓中止的容器

Docker start CONTAINER [CONTAINER...]
  命令參數:
  -a,--attach=false         Attach container'sSTDOUT and STDERR and forward allsignals to the process
  -i,--interactive=false   Attach container'sSTDIN
  例子:

sudo docker start 7bb0e258aefe

docker restart: 重啓運行中的容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]
  命令參數:
  -t, --time=10                     殺掉容器進程以前,等待的時間
  例子:

sudo docker restart 7bb0e258aefe

docker cp: 拷貝容器中的文件

docker cp CONTAINER:PATH HOSTPATH
  例子:

docker cp c3f279d17e0a:/home/hyzhou/answer.txt .  將鏡像中的/home/hyzhou/answer.txt文件拷貝到當前目錄下

docker rm: 刪除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]
  命令參數:
  -f, --force=false              強制刪除容器(使用SIGKILL)
  -l, --link=false                 Removethe specified link and not the underlyingcontainer
  -v, --volumes=false        Removethe volumes associated with the container

docker rm my_ubuntu               刪除容器
docker rm 708cc7ec0f23           刪除容器
docker rm $(docker ps -a -q)    刪除全部容器

docker top: 查看容器輸出

docker top CONTAINER [ps OPTIONS]
  例子:
  [ps OPTIONS]的意思是, 你能夠在這個命令後面加上使用ps命令時的各類參數

sudo docker top 708cc7ec0f23

sudo docker top 708cc7ec0f23 aux

docker events: 實時監聽容器的事件

docker events [OPTIONS]
  命令參數:
  --since=""                      顯示某一個時間戳以後的events
  --until=""                        實時監聽到某個時間戳爲止

A終端:
sudo docker events                             終端A等待Docker系統信息
sudo docker events --since 1378216169
sudo docker events --since '2013-09-03'
sudo docker events--since '2013-09-03 15:49:29'
sudo docker events --since'2013-09-03 15:49:29 +0200CEST'
sudo docker events > docker.log &   後臺記錄Docker的容器事件
B終端:
sudo docker restart 708cc7ec0f23     從B終端關閉容器
A終端顯示:
2014-09-06T23:08:21+08:00708cc7ec0f23a5ec898c9d6308e9767edb66b863e96352ca6e030f0a5557f3b2:(fromubuntu:latest) die
2014-09-06T23:08:22+08:00708cc7ec0f23a5ec898c9d6308e9767edb66b863e96352ca6e030f0a5557f3b2:(fromubuntu:latest) start
2014-09-06T23:08:22+08:00708cc7ec0f23a5ec898c9d6308e9767edb66b863e96352ca6e030f0a5557f3b2:(fromubuntu:latest) restart

docker history: 顯示鏡像的歷史記錄

docker history [OPTIONS] IMAGE
命令參數:
--no-trunc=false 不要截斷輸出
-q, --quiet=false 僅顯示容器ID

docker search: 在Docker Hub上尋找鏡像

docker search TERM
  命令參數:
  --automated=false         使用Github或BitBucket的源代碼自動構建
  --no-trunc=false             不要截斷輸出
  -s, --stars=0                   只顯示Star數量超過N的鏡像
  例子:
  docker search --starts=10 ubuntu

docker pull: 從遠程拉取鏡像

docker pull NAME[:TAG]
例子:
docker pull ubuntu:latest

docker push: 推送鏡像到遠程倉庫

docker push NAME[:TAG]
例子:
docker push hyzhou/ubuntu:3.2.3

docker diff: 列出鏡像中文件和目錄的變化

docker diff CONTAINER
命令輸出: 輸出一共有三種
A- Add
D- Delete
C- Change
例子:
diff顯示的是鏡像和當前運行的容器之間的區別,因此diff的基礎是IMAGE
下面例子中的b705fc4f4a50和708cc7ec0f23,內容實際上是同樣的

sudo docker ps -a
CONTAINERID        IMAGE                    COMMAND                CREATED             STATUS
b705fc4f4a50        new:latest               "/bin/bash"            49 seconds ago      Up 49 seconds
708cc7ec0f23        ubuntu:latest            "/bin/bash"            9 minutes ago       Up 9 minutes
sudo docker diff 7bb0e258aefe
C/root
A/root/new.txt
sudo docker diff b705fc4f4a50

docker commit: 將容器打包成新的鏡像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
命令參數:
-a, --author="" 做者信息,"John Hannibal Smith <hannibal@a-team.com>"
-m, --message="" 提交信息
-p, --pause=true 在提交鏡像時暫停容器

sudo docker ps
ID                  IMAGE               COMMAND             CREATED             STATUS
c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours
197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours
docker commitc3f279d17e0a Hyzhou/my_ubuntu:3.2.3
docker commit -a "Hyzhou<hyzhou@qq.com>" -m "addthe new software" c3f279d17e0aHyzhou/my_ubuntu:3.2.3
docker images
REPOSITORY                        TAG                 ID                  CREATED             VIRTUAL SIZE
Hyzhou/my_ubuntu                  3.2.3               f5283438590d        16 seconds ago      335.7 MB

docker build: 使用Dockerfile構建新鏡像

docker build [OPTIONS] PATH|URL|-

  命令參數:
  --force-rm=false              移除構建時生成的中間容器
  --no-cache=false             Donot use cache when building the image
  -q, --quiet=false               不顯示容器的輸出
  --rm=true                         構建成功後,移除構建時生成的中間容器
  -t, --tag=""                        構建成功後,新建鏡像的名稱

docker tag: 爲鏡像加上標籤

docker tag [OPTIONS] IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG]
  命令參數:
  -f, --force=false                強制打上標籤?

sudo docker tag ubuntu:latest hyzhou/my_ubuntu:3.2.3    給ubuntu:latest打上新TAG:hyzhou/my_ubuntu:3.2.3
sudo dockertag eb601b8965b8 ubuntu:latest             給eb601b8965b8鏡像打上TAG: ubuntu:latest(會轉換原有的TAG指向)

docker save: 將image保存爲tar壓縮文件

docker save [OPTIONS] IMAGE [IMAGE...]
-o, --output=""                  寫入到一個文件中做爲輸出,默認是標準輸出流
例子:
docker save --output ubuntu.tar ubuntu:latest  將Ubuntu的最新鏡像打包爲ubuntu.tar
docker save ubuntu:latest > ubuntu.tar          將Ubuntu的最新鏡像打包爲ubuntu.tar

docker load: 將tar壓縮文件保存爲image

Docker load [OPTIONS]

  命令參數:
  -i, --input=""                    讀取一個壓縮文件做爲輸入,默認是標準輸入流

docker load --input ubuntu.tar                  讀取ubuntu.tar做爲鏡像
docker load < ubuntu.tar                        讀取ubuntu.tar做爲鏡像

docker export: 把容器系統文件打包並導出來,方便分發給其餘場景使用。

docker export CONTAINER

例子:
sudo docker export my_ubuntu > ubuntu.tar 將Ubuntu的最新鏡像打包爲ubuntu.tar

docker import: 加載容器系統文件

docker import URL|- [REPOSITORY[:TAG]]
例子:
sudo docker import http://example.com/exampleimage.tgz
cat exampleimage.tgz | sudodocker import -exampleimagelocal:new
相關文章
相關標籤/搜索