1. 程式人生 > 其它 >docker命令詳解

docker命令詳解

1、docker --help詳解

[root@localhost test]# docker --help

Usage:  docker [OPTIONS] COMMAND    # docker [可選項] 命令

A self-sufficient runtime for containers    # 容器的自足執行時     

Options:
      --config string      Location of client config files (default "/root/.docker")    # 客戶端配置檔案的位置
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker
                           context use")    # 用於連線到守護程序的上下文的名稱(覆蓋DOCKER_HOST的環境變數,並且用“ docker context use”設定預設上下文)
  -D, --debug              Enable debug mode    # 開啟debug模式
  -H, --host list          Daemon socket(s) to connect to    # 要連線的守護程序socket
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")    # 設定日誌級別
      --tls                Use TLS; implied by --tlsverify    # 使用TLS
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")    # 僅信任該CA簽名的證書
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")    # TLS證書檔案的路徑
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")    # TLS金鑰檔案的路徑
      --tlsverify          Use TLS and verify the remote    # 使用TLS並驗證遠端
  -v, --version            Print version information and quit    # 列印版本資訊並退出

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes    # 管理叢集節點
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images    # 管理對Docker映象的新人
  volume      Manage volumes    # 管理卷

Commands:
  attach      Attach local standard input, output, and error streams to a running container    # 當前 shell 下 attach 連線指定執行映象
  build       Build an image from a Dockerfile    # 通過 Dokcerfile 定製映象
  commit      Create a new image from a container's changes    # 提交當前容器為新的映象
  cp          Copy files/folders between a container and the local filesystem    # 從容器中拷貝指定檔案或目錄到宿主機中
  create      Create a new container    # 建立一個新的容器,同 run 但是不啟動容器
  diff        Inspect changes to files or directories on a container's filesystem    # 檢視 Docker 容器變化
  events      Get real time events from the server    # 從 Docker 服務獲取容器實時時間
  exec        Run a command in a running container    # 在已存在的容器上執行命令
  export      Export a container's filesystem as a tar archive    # 到處容器的內容流作為一個 tar 歸檔檔案(對應 import)
  history     Show the history of an image    # 顯示映象形成歷史
  images      List images    # 列出系統當前映象
  import      Import the contents from a tarball to create a filesystem image    # 從 tar 包中的內容建立一個新的檔案系統映像(對應 export)
  info        Display system-wide information    # 顯示系統相關資訊
  inspect     Return low-level information on Docker objects    # 檢視容器詳細資訊
  kill        Kill one or more running containers    # kill 指定 docker 容器
  load        Load an image from a tar archive or STDIN    # 從一個 tar 包中載入映象(對應 save)
  login       Log in to a Docker registry    # 註冊或登入一個 docker 源伺服器
  logout      Log out from a Docker registry    # 從當前 Docker registry 退出
  logs        Fetch the logs of a container    # 輸出當前容器日誌資訊
  pause       Pause all processes within one or more containers    # 暫停容器
  port        List port mappings or a specific mapping for the container    # 檢視對映埠對應的容器內部源埠
  ps          List containers    # 列出容器列表
  pull        Pull an image or a repository from a registry    # 從 docker 映象源伺服器拉去指定映象或者庫映象
  push        Push an image or a repository to a registry    # 推送指定映象或者庫映象至 docker 源伺服器
  rename      Rename a container    # 重新命名一個容器
  restart     Restart one or more containers    # 重啟一個或多個容器
  rm          Remove one or more containers    # 移除一個或多個容器
  rmi         Remove one or more images    # 移除一個或多個映象(無容器使用該映象才可移除,否則需刪除相關容器才可繼續或 -f 強制執行)
  run         Run a command in a new container    # 建立一個新的容器並執行一個命令
  save        Save one or more images to a tar archive (streamed to STDOUT by default)    # 儲存一個映象為一個 tar 包(對應load)
  search      Search the Docker Hub for images    # 在 docker hub 中搜索映象
  start       Start one or more stopped containers    # 啟動容器
  stats       Display a live stream of container(s) resource usage statistics    # 顯示實時的容器資源使用情況統計流
  stop        Stop one or more running containers    # 停止容器
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE    # 給源中的映象打標籤
  top         Display the running processes of a container    # 檢視容器中執行的程序資訊
  unpause     Unpause all processes within one or more containers    # 取消暫停容器
  update      Update configuration of one or more containers    # 為容器更新配置
  version     Show the Docker version information    # 檢視 docker 版本號
  wait        Block until one or more containers stop, then print their exit codes    # 阻塞直到一個或多個容器停止,然後列印其退出程式碼,即擷取容器停止時的退出狀態值

Run 'docker COMMAND --help' for more information on a command.

2、docker常用命令

執行一個容器

docker run -it -p 8088:8088 -p 8089:8089 -p 8090:9090 -v /root/soft/docker:/root/soft/docker -v /root/soft/dockertt:/root/soft/dockertt loen/rc /bin/bash

命令的格式:
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a, --attach=[] 登入容器(以docker run -d啟動的容器)
-c, --cpu-shares=0 設定容器CPU權重,在CPU共享場景使用
--cap-add=[] 新增許可權,許可權清單詳見:http://linux.die.net/man/7/capabilities
--cap-drop=[] 刪除許可權,許可權清單詳見:http://linux.die.net/man/7/capabilities
--cidfile="" 執行容器後,在指定檔案中寫入容器PID值,一種典型的監控系統用法
--cpuset="" 設定容器可以使用哪些CPU,此引數可以用來容器獨佔CPU
-d, --detach=false 指定容器運行於前臺還是後臺
--device=[] 新增主機裝置給容器,相當於裝置直通
--dns=[] 指定容器的dns伺服器
--dns-search=[] 指定容器的dns搜尋域名,寫入到容器的/etc/resolv.conf檔案
-e, --env=[] 指定環境變數,容器中可以使用該環境變數
--entrypoint="" 覆蓋image的入口點
--env-file=[] 指定環境變數檔案,檔案格式為每行一個環境變數
--expose=[] 指定容器暴露的埠,即修改映象的暴露埠
-h, --hostname="" 指定容器的主機名
-i, --interactive=false 開啟STDIN,用於控制檯互動
--link=[] 指定容器間的關聯,使用其他容器的IP、env等資訊
--lxc-conf=[] 指定容器的配置檔案,只有在指定--exec-driver=lxc時使用
-m, --memory="" 指定容器的記憶體上限
--name="" 指定容器名字,後續可以通過名字進行容器管理,links特性需要使用名字
--net="bridge" 容器網路設定,待詳述
-P, --publish-all=false 指定容器暴露的埠,待詳述
-p, --publish=[] 指定容器暴露的埠,待詳述
--privileged=false 指定容器是否為特權容器,特權容器擁有所有的capabilities
--restart="" 指定容器停止後的重啟策略,待詳述
--rm=false 指定容器停止後自動刪除容器(不支援以docker run -d啟動的容器)
--sig-proxy=true 設定由代理接受並處理訊號,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
-t, --tty=false 分配tty裝置,該可以支援終端登入
-u, --user="" 指定容器的使用者
-v, --volume=[] 給容器掛載儲存卷,掛載到容器的某個目錄
--volumes-from=[] 給容器掛載其他容器上的卷,掛載到容器的某個目錄
-w, --workdir="" 指定容器的工作目錄

>>>>>> 詳細講解
埠暴露
-P引數:docker自動對映暴露埠;

docker run -d -P training/webapp <span style="color:#009900;">//docker自動在host上開啟49000到49900的埠,對映到容器(由映象指定,或者--expose引數指定)的暴露埠;</span>
-p引數:指定埠或IP進行對映;

docker run -d -p 5000:80 training/webapp <span style="color:#009900;">//host上5000號埠,對映到容器暴露的80埠;</span>
docker run -d -p 127.0.0.1:5000:80 training/webapp <span style="color:#009900;">//host上127.0.0.1:5000號埠,對映到容器暴露的80埠;</span>
docker run -d -p 127.0.0.1::5000 training/webapp <span style="color:#009900;">//host上127.0.0.1:隨機埠,對映到容器暴露的80埠;</span>
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp <span style="color:#009900;">//繫結udp埠;</span>

網路配置

--net=bridge: <span style="color:#009900;">//使用docker daemon指定的網橋</span>
--net=host: <span style="color:#009900;">//容器使用主機的網路</span>
--net=container:NAME_or_ID:<span style="color:#009900;">//使用其他容器的網路,共享IP和PORT等網路資源</span>
--net=none: <span style="color:#009900;">//容器使用自己的網路(類似--net=bridge),但是不進行配置</span>

關閉執行中的容器

docker stop 容器ID

啟動一個已經停止的容器 

docker start 容器ID

重啟一個容器

docker restart 容器ID

進入一個執行中的容器

docker attach 容器ID

顯示全部容器

docker ps -a

顯示當前執行的容器  

docker ps

檢視本地映象

docker images

刪除所有映象

docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}')

構建容器

docker build -t 映象名稱 .     # 後面的. 指的是當前資料夾 (其實是Dockerfile存放的資料夾)

# 建立映像檔案。–rm 選項是告訴Docker,在構建完成後刪除臨時的Container,Dockerfile的每一行指令都會建立一個臨時的Container,一般這些臨時生成的Container是不需要的
docker build --rm=true -t loen/lamp .

刪除容器

docker rm 容器ID

刪除所有容器  

docker rm $(docker ps -a)

檢視歷史

docker history 映象ID

匯出容器

docker export 容器ID > xxx.tar

把 mynewimage 映象儲存成 tar 檔案

docker save myimage | bzip2 -9 -c> /home/save.tar.bz2

載入 myimage 映象

bzip2 -d -c < /home/save.tar.bz2 | docker load