超值!Docker 常用命令彙總

作者 | 步爾斯特

來源 | CSDN部落格

幫助命令

docker version

docker info

docker info

docker --help

docker –help

docker --help

映象命令

2.1 列出映象

docker images [OPTIONS] [REPOSITORY[:TAG]]

REPOSITORY:表示映象的倉庫源

TAG:映象的標籤

IMAGE ID:映象ID

CREATED:映象創建時間

SIZE:映象大小

同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,我們使用 REPOSITORY:TAG 來定義不同的映象。

如果你不指定一個映象的版本標籤,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 映象

OPTIONS說明:

-a :列出本地所有的映象(含中間映像層,默認情況下,過濾掉中間映像層);

–digests :顯示映象的摘要資訊;

-f :顯示滿足條件的映象;

當前支持的過濾配置的key為:

  • dangling:顯示標記為空的映象,值只有true和false

    docker images -f dangling=true

    • label:這個是根據標籤進行過濾,其中lable的值,是docker在編譯的時候配置的或者在Dockerfile中配置的

    • before:這個是根據時間來進行過濾,其中before的value表示某個映象構建時間之前的映象列表

      docker images -f before=true

      • since:跟before正好相反,表示的是在某個映象構建之後構建的映象 reference:這個是添加正則進行匹配

        docker images -f since=true

        • reference:這個是添加正則進行匹配

          docker images --filter reference=*:*

          –format :指定返回值的模板檔案;

            docker images --format "{{.ID}}\t{{.Repository}}"

            --no-trunc :顯示完整的映象資訊;

            –no-trunc :顯示完整的映象資訊;

            -q :只顯示映象ID。

            2.2 查找映象

            docker search [OPTIONS] TERM

            1. docker search 映象名字

            2. docker search [OPTIONS] 映象名字

            –no-trunc : 顯示完整的映象描述

            -s : 列出收藏數不小於指定值的映象。

            –automated : 只列出 automated build類型的映象;

            –filter , -f:基於給定條件過濾輸出

            –format:使用模板格式化顯示輸出

            –limit:Max number of search results ,預設值25

            –no-trunc:禁止截斷輸出

            2.3 下載映象

            docker pull [OPTIONS] NAME[:TAG|@DIGEST]

            1. docker pull 映象名字

            2. docker pull 映象名字[:TAG]

            2.4 刪除映象

            docker rmi [OPTIONS] IMAGE [IMAGE…]

            1. docker rmi -f 映象ID

            2. docker rmi -f 映象名1:TAG 映象名2:TAG

            3. docker rmi -f $(docker images -qa)

            容器命令

            為了更好的學習和演示,我在這裡下載一個ubuntu的映象:

            3.1 創建新容器並運行

            3.1 創建新容器並運行

            docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

            OPTIONS說明:

            -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;

            -d: 後臺運行容器,並返回容器ID;

            -i: 以互動模式運行容器,通常與 -t 同時使用;

            -P: 隨機埠對映,容器內部埠隨機對映到主機的埠

            -p: 指定埠對映,格式為:主機(宿主)埠:容器埠

            -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=[]: 開放一個埠或一組埠;

            –volume , -v: 綁定一個卷

            實例

            • 使用docker映象nginx:latest以後臺模式啟動一個容器,並將容器命名為mynginx。

              docker run --name mynginx -d nginx:latest

              • 使用映象nginx:latest以後臺模式啟動一個容器,並將容器的80埠對映到主機隨機埠。

                docker run -P -d nginx:latest

                • 使用映象 nginx:latest,以後臺模式啟動一個容器,將容器的 80 埠對映到主機的 80 埠,主機的目錄 /data 對映到容器的 /data。

                  docker run -p 80:80 -v /data:/data -d nginx:latest

                  • 綁定容器的 8080 埠,並將其對映到本地主機 127.0.0.1 的 80 埠上。

                    docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

                    • 使用映象nginx:latest以互動模式啟動一個容器,在容器內執行/bin/bash命令。

                      docker run -it nginx:latest /bin/bash

                      • 啟動互動式容器

                        docker run -it centos /bin/bash

                        3.2 列出容器

                        docker ps [OPTIONS]

                        OPTIONS說明:

                        -a :顯示所有的容器,包括未運行的。

                        -f :根據條件過濾顯示的內容。

                        –format :指定返回值的模板檔案。

                        -l :顯示最近創建的容器。

                        -n :列出最近創建的n個容器。

                        –no-trunc :不截斷輸出。

                        -q :靜默模式,只顯示容器編號。

                        -s :顯示總的檔案大小。

                        3.3 退出容器

                        • 容器停止退出

                        exit

                        • 容器不停止退出

                        ctrl+P+Q

                        3.4 啟動容器

                        docker start 容器ID或者容器名

                        3.5 重啟容器

                        docker restart 容器ID或者容器名

                        3.6 停止容器

                        docker stop 容器ID或者容器名

                        3.7 強制停止容器

                        docker kill 容器ID或者容器名

                        3.8 刪除已停止的容器

                        docker rm 容器ID

                        一次性刪除多個容器:

                        1. docker rm -f $(docker ps -a -q)

                        2. docker ps -a -q | xargs docker rm

                        3.9 啟動守護式容器

                        docker run -d 容器名

                        使用映象ubuntu:latest以後臺模式啟動一個容器 docker run -d ubuntu

                        問題:docker ps -a 進行查看, 會發現容器已經退出

                        很重要的要說明的一點: Docker容器後臺運行,就必須有一個前臺進程.

                        容器運行的命令如果不是那些 一直掛起的命令 (比如運行top,tail),就是會自動退出的。

                        這個是docker的機制問題,比如你的web容器,我們以nginx為例,正常情況下,我們配置啟動服務只需要啟動響應的service即可。

                        例如 service nginx start

                        但是,這樣做,nginx為後臺進程模式運行,就導致docker前臺沒有運行的應用,

                        這樣的容器後臺啟動後,會立即自殺因為他覺得他沒事可做了.

                        所以,最佳的解決方案是,將你要運行的程序以前臺進程的形式運行

                        3.10 查看容器日誌

                        docker logs -f -t –tail 容器ID

                        • -t 是加入時間戳

                        • -f 跟隨最新的日誌列印

                        • –tail 數字 顯示最後多少條

                        3.11 查看容器內運行的進程

                        docker top 容器ID

                        3.12 查看容器內部細節

                        docker inspect 容器ID

                        3.13 進入正在運行的容器並以命令列互動

                        docker exec -it 容器ID bash

                        重新進入docker attach 容器ID

                        上述兩個區別

                        1. attach 直接進入容器啟動命令的終端,不會啟動新的進程

                        2. exec 是在容器中打開新的終端,並且可以啟動新的進程

                        3.14 從容器內複製檔案到主機上

                        docker cp 容器ID:容器內路徑 目的主機路徑

                        命令彙總

                        項目Value
                        attach Attach to a running container當前 shell 下 attach 連接指定運行映象
                        build Build an image from a Dockerfile通過 Dockerfile 定製映象
                        commit Create a new image from a container changes提交當前容器為新的映象
                        cp Copy files/folders from the containers filesystem to the host path從容器中複製指定檔案或者目錄到宿主機中
                        create Create a new container創建一個新的容器,同 run,但不啟動容器
                        diff Inspect changes on a container’s filesystem查看 docker 容器變化
                        events Get real time events from the server從 docker 服務獲取容器實時事件
                        exec Run a command in an existing container在已存在的容器上運行命令
                        export Stream the contents of a container as a tar archive匯出容器的內容流作為一個 tar 歸檔檔案[對應 import ]
                        history Show the history of an image展示一個映象形成歷史
                        images List images列出系統當前映象
                        import Create a new filesystem image from the contents of a tarball#從tar包中的內容創建一個新的檔案系統映像[對應export]
                        info Display system-wide information#顯示系統相關資訊
                        inspect Return low-level information on a container查看容器詳細資訊
                        kill Kill a running containerkill 指定 docker 容器
                        load Load an image from a tar archive從一個 tar 包中載入一個映象[對應 save]
                        login Register or Login to the docker registry server註冊或者登陸一個 docker 源伺服器
                        logout Log out from a Docker registry server從當前 Docker registry 退出
                        logs Fetch the logs of a container輸出當前容器日誌資訊
                        port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT查看對映埠對應的容器內部源埠
                        pause Pause all processes within a container暫停容器
                        ps List containers列出容器列表
                        pull Pull an image or a repository from the docker registry server從docker映象源伺服器拉取指定映象或者庫映象
                        push Push an image or a repository to the docker registry server推送指定映象或者庫映象至docker源伺服器
                        restart Restart a running container重啟運行的容器
                        rm Remove one or more containers移除一個或者多個容器
                        rmi Remove one or more images移除一個或多個映象[無容器使用該映象才可刪除,否則需刪除相關容器才可繼續或 -f 強制刪除]
                        run Run a command in a new container創建一個新的容器並運行一個命令
                        save Save an image to a tar archive保存一個映象為一個 tar 包[對應 load]
                        search Search for an image on the Docker Hub在 docker hub 中搜尋映象
                        start Start a stopped containers啟動容器
                        stop Stop a running containers停止容器
                        tag Tag an image into a repository給源中映象打標籤
                        top Lookup the running processes of a container查看容器中運行的進程資訊
                        unpause Unpause a paused container取消暫停容器
                        version Show the docker version information查看 docker 版本號
                        wait Block until a container stops, then print its exit code擷取容器停止時的退出狀態值
                        點點贊

                        點點贊

                        點點贊

                        點在看

                        相關文章

                        Docker 映象詳細講解

                        Docker 映象詳細講解

                        作者 | 微楓Micromaple 來源 | CSDN部落格 前言 大家好,本文是對 Docker 映象的詳細講解,講解了如何安裝 Dock...

                        在 MacOS 上運行 Docker 太慢!

                        在 MacOS 上運行 Docker 太慢!

                        你是否也覺得,MacOS 中的 Docker 非常慢?本文作者想出了解決辦法,不妨來試試看。 原文連結:https://www.paolom...

                        Docker 如何安全地進入到容器內部

                        Docker 如何安全地進入到容器內部

                        作者 | 飛向星的客機 來源 | CSDN部落格 🌟 前言 映象是構建容器的藍圖,Docker 以映象為模板,構建出容器。 容器在映象的基礎...

                        40 張圖 詳解 Docker 容器監控

                        40 張圖 詳解 Docker 容器監控

                        作者 | 飛向星的客機 來源 | CSDN部落格 前言 在企業中,通常業務是不允許隨意停止的,否則將給企業帶來巨大的經濟損失。 運維工程師要...