天天看點

docker 常用指令 (容器, 鏡像,資料卷)

docker 常用指令

      • docker 鏡像:
      • docker 定制鏡像
      • docker 容器
      • docker 資料管理

docker 鏡像:

  1. 擷取鏡像

    sudo docker pull [選項] [Docker Registry 位址[:端口号]/]倉庫名[:标簽]

    docker pull ubuntu:16.04

  2. 運作鏡像

    sudo docker run -it --rm ubuntu:16.04 bash

    退出 exit

  3. 列出鏡像

    sudo docker image ls

  4. 檢視鏡像、容器、資料卷所占用的空間

    docker system df

  5. 根據倉庫名列出鏡像

    docker image ls ubuntu

  6. 列出特定的某個鏡像

    docker image ls ubuntu:16.04

  7. 删除本地鏡像

    docker image rm [選項] <鏡像1> [<鏡像2>…]

docker 定制鏡像

  1. 建立自己的鏡像路徑
  2. 在路徑下touch Dockerfile
  3. docker build [選項] <上下文路徑/URL/->

    docker build -t scrapy:v3 .

  4. 鏡像建構上下文(Context)

    1> ENV 設定環境變量

    2> CMD 容器啟動指令

    3> ADD 更進階的複制檔案

    4> WORKDIR 指定工作目錄

    格式為 WORKDIR <工作目錄路徑>

    5> 列出所有在指定 image 之後建立的 image 的父 image

    docker image inspect --format=’{{.RepoTags}} {{.Id}} {{.Parent}}’ $(docker image ls -q --filter since=xxxxxx) # xxxxx image ID

    6> 強制删除none鏡像

    檢視none鏡像

    docker images | grep none

    檢視none鏡像ID

    docker images | grep none | awk ‘{print $3}’

    強制删除none鏡像

    docker images | grep none | awk ‘{print $3}’|xargs docker rmi

docker 容器

  1. 啟動容器

    docker run -t -i 鏡像名 /bin/bash

  2. 進入容器

    docker exec -it 容器名 bash

    退出 exit

  3. 運作容器

    docker run ubuntu:17.10 /bin/sh -c “while true; do echo helloworld; sleep 1; done” # 列印在主控端上

    docker run -d ubuntu:17.10 /bin/sh -c “while true; do echo hello world; sleep 1; done” # 輸出在背景

  4. 檢視log資訊

    docker container logs [container ID or NAMES]

  5. 終止容器

    docker container stop [container ID or NAMES]

    啟動終止狀态容器 docker container start

    重新開機運作狀态容器 docker container restart

  6. 導入導出容器

    導出容器

    docker export 7691a814370e > ubuntu.tar

    導入容器快照

    cat ubuntu.tar | docker import - test/ubuntu:v1.0

    指定URL、目錄 docker import http://example.com/exampleimage.tgz example/imagerepo

  7. 删除容器

    用 docker container rm [] 删除一個終止狀态的容器

    如果想删除運作中的容器, 添加 -f 參數

    docker container prune # 清理所有處于終止狀态的容器

  8. 查詢容器資訊

    docker inspect [容器名]

  9. 檢視容器狀态

    docker inspect -f {{.State.Status}} [容器名]

    10.檢視容器ip

    docker inspect -f {{.NetworkSettings.IPAddress}} [容器名]

    docker inspect [容器名] | grep IPAddress

  10. 檢視docker 占用的系統資源

    docker stats [容器名]

docker 資料管理

  1. 資料卷

    1> 是一個可供一個或者多個容器使用的特殊目錄它繞過 UFS,可以提供很多有用的特性:

    a. 資料卷 可以在容器之間共享和重用

    b.對 資料卷的修改會立馬生效

    c. 對 資料卷的更新不會影響鏡像

    d. 資料卷 預設會一直存在, 即使容器被删除

    2> 檢視所有的資料卷

    docker volume ls

    3> 建立一個資料卷

    docker volume create [資料卷名稱]

    4> 以檢視指定 資料卷 的資訊

    docker volume inspect my-vol

    5> 啟動一個挂載資料卷的容器

    docker run -d -P --name web --mount source=my-vol,target=/webapp training/webapp python app.py

    6> 删除資料卷

    docker volume rm my-vol

    7> 清理無主資料卷

    docker volume prune

  2. 挂載主機目錄

    docker run -p 28018:27017 -v /data/db:/data/db -d --name mongo_server mongo:3.4

  3. 資料卷進階

    volumes-from 用于資料卷容器(Data Volume Container)

    1> 建立和挂載資料卷容器

    有時候, 将相關的容器部署到同一個host上, 并且希望容器間可以資料共享, 我們應該建立一個命名的資料卷容器, 然後供其他容器挂載。

    如: docker run -d -v /dbdata --name dbdata taining/postgres

    然後通過–volumes-from 在其他容器挂載/dbdata 資料卷。

    docker run -d --volumes-from dbdata --name db1 taining/postgres

    docker run -d --volumes-from dbdata --name db2 taining/postgres

    可以同時使用多個–volumes-from 參數, 從多個容器挂載多個資料卷。

    也可以從其他已經挂載資料卷的容器挂載資料卷。

    docker run -d --name db3 --volnumes-from db1 taining/postgres

    即使删除挂載了資料卷的容器(包括初始的容器和其他子容器), 資料卷并不會被删除。 如果想删除該資料卷, 必須在删除最後一個引用該資料卷的時候調用docker rm -v 顯示删除資料卷

    2> 資料卷容器的應用

    ----

    3>備份、恢複和遷移資料卷

    使用資料卷共享資料,難免面臨資料的備份, 恢複和遷移問題

    a. 備份資料卷

    通過參數 --volumes-from 從資料卷挂載資料卷, 然後備份資料卷中的資料。

    docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backip.tar /dbdata

    這裡我們建立一個新的容器, 将Host本地目錄挂載到/backup. 然後将資料卷容器的dbdata的資料卷(/dbdata)打包到/backuo/back.tar

    然後在Host的目前目錄下就可以得到backup.tar

    b. 恢複資料卷

    我們可以将備份的資料恢複到原有的容器或者其他任何容器。 備份到新的容器

    docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

    然後執行

    docker run --volnumes-from dbdata2 -v $(pwd):/backup busybox xvf /backup/backup.tar