Docker常見命令---簡易教程

凱凱王的技術生涯發表於2018-04-24

容器相關操作

  • docker create # 建立一個容器但是不啟動它
  • docker run # 建立並啟動一個容器
  • docker stop # 停止容器執行,傳送訊號SIGTERM
  • docker start # 啟動一個停止狀態的容器
  • docker restart # 重啟一個容器
  • docker rm # 刪除一個容器
  • docker kill # 傳送訊號給容器,預設SIGKILL
  • docker attach # 連線(進入)到一個正在執行的容器
  • docker wait # 阻塞到一個容器,直到容器停止執行

 

獲取容器相關資訊

  • docker ps # 顯示狀態為執行(Up)的容器
  • docker ps -a # 顯示所有容器,包括執行中(Up)的和退出的(Exited)
  • docker inspect # 深入容器內部獲取容器所有資訊
  • docker logs # 檢視容器的日誌(stdout/stderr)
  • docker events # 得到docker伺服器的實時的事件
  • docker port # 顯示容器的埠對映
  • docker top # 顯示容器的程式資訊
  • docker diff # 顯示容器檔案系統的前後變化

 

匯出容器

  • docker cp # 從容器裡向外拷貝檔案或目錄
  • docker export # 將容器整個檔案系統匯出為一個tar包,不帶layers、tag等資訊

 

執行

  • docker exec # 在容器裡執行一個命令,可以執行bash進入互動式

 

映象操作

  • docker images # 顯示本地所有的映象列表
  • docker import # 從一個tar包建立一個映象,往往和export結合使用
  • docker build # 使用Dockerfile建立映象(推薦)
  • docker commit # 從容器建立映象
  • docker rmi # 刪除一個映象
  • docker load # 從一個tar包建立一個映象,和save配合使用
  • docker save # 將一個映象儲存為一個tar包,帶layers和tag資訊
  • docker history # 顯示生成一個映象的歷史命令
  • docker tag # 為映象起一個別名

 

映象倉庫(registry)操作

  • docker login # 登入到一個registry
  • docker search # 從registry倉庫搜尋映象
  • docker pull # 從倉庫下載映象到本地
  • docker push # 將一個映象push到registry倉庫中

 

獲取Container IP地址(Container狀態必須是Up)

docker inspect id | grep IPAddress | cut -d '"' -f 4

 

獲取埠對映

docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' id

 

獲取環境變數

docker exec container_id env

 

殺掉所有正在執行的容器

docker kill $(docker ps -q)

 

刪除老的(一週前建立)容器

docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm

 

刪除已經停止的容器

docker rm `docker ps -a -q`

 

刪除所有映象,小心

docker rmi $(docker images -q)

 

Dockerfile

Dockerfile是docker構建映象的基礎,也是docker區別於其他容器的重要特徵,正是有了Dockerfile,docker的自動化和可移植性才成為可能。

不論是開發還是運維,學會編寫Dockerfile幾乎是必備的,這有助於你理解整個容器的執行。

 

FROM , 從一個基礎映象構建新的映象

FROM ubuntu

 

MAINTAINER , 維護者資訊

MAINTAINER William 

 

ENV , 設定環境變數

ENV TEST 1

 

RUN , 非互動式執行shell命令

RUN apt-get -y update 
RUN apt-get -y install nginx

 

ADD , 將外部檔案拷貝到映象裡,src可以為url

ADD http://nicescale.com/  /data/nicescale.tgz

 

WORKDIR /path/to/workdir, 設定工作目錄

WORKDIR /var/www

 

USER , 設定使用者ID

USER nginx

 

VULUME <#dir>, 設定volume

VOLUME [‘/data’]

 

EXPOSE , 暴露哪些埠

EXPOSE 80 443

 

ENTRYPOINT [‘executable’, ‘param1’,’param2’]執行命令

ENTRYPOINT ["/usr/sbin/nginx"]

 

CMD [“param1”,”param2”]

CMD ["start"]

docker建立、啟動container時執行的命令,如果設定了ENTRYPOINT,則CMD將作為引數

 

Dockerfile最佳實踐

  • 儘量將一些常用不變的指令放到前面
  • CMD和ENTRYPOINT儘量使用json陣列方式

 

通過Dockerfile構建image

docker build csphere/nginx:1.7 .

 

映象倉庫Registry

映象從Dockerfile build生成後,需要將映象推送(push)到映象倉庫。企業內部都需要構建一個私有docker registry,這個registry可以看作二進位制的scm,CI/CD也需要圍繞registry進行。

 

部署registry

mkdir /registry
docker run  -p 80:5000  -e STORAGE_PATH=/registry  -v /registry:/registry  registry:2.0

 

推送映象儲存到倉庫

假設192.168.1.2是registry倉庫的地址:

docker tag  csphere/nginx:1.7 192.168.1.2/csphere/nginx:1.7
docker push 192.168.1.2/csphere/nginx:1.7

 

幾個簡單小例子

容器操作

  1. 建立並拉取busybox

 docker pull busybox:latest

2.建立測試容器

docker run -d --name con03 csphere/test:0.1
efc9bda4a2ff2f479b18e0fc4698e42c47c9583a24c93f5ce6b28a828a172709

3.登陸到con03中

# docker exec -it con03 /bin/bash
[root@efc9bda4a2ff /]# exit

4.停止con03

# docker stop con03
con03

5.開啟con03

# docker start con03
con03

docker退出命令:如果要正常退出不關閉容器,請按Ctrl+P+Q進行退出容器 

本文出自 “黃怡善的運維部落格” 部落格,轉載請註明出處http://linuxpython.blog.51cto.com/10015972/1682219

 

 

本文連結:Docker常見命令---簡易教程

有容雲-構築企業容器雲 www.youruncloud.com

相關文章