Docker常用命令記錄

一、幫助命令 

# 版本驗證
docker version
# 容器詳細信息,比如版本號、有幾個鏡像、當前運行的有幾個、關閉的有幾個等等
docker info
# 幫助命令,公式:docker [OPTIONS] COMMAND
docker --help

二、鏡像命令

# 列出本地主機上的鏡像
docker images
# 詳細有4種,可以通過docker images --help查看
# 公式:docker images [OPTIONS] [REPOSITORY[:TAG]]
# -a 列出本地所有鏡像
# -q 只顯示鏡像ID
# -qa 顯示所有鏡像ID
# --digests 顯示摘要
# --no-trunc 顯示完整鏡像信息
docker images -a

# 查看鏡像變更歷史
docker history centos


# 去官方倉庫查找 hello-world 這個鏡像(查找是在官方,下載是在自己配置的源)
# 公式:docker search [OPTIONS] TERM
# --no-trunc 顯示完整的鏡像描述
# -s 100 列出收藏數不小於100的鏡像(相當於點贊數)
# --automated 只顯示 AUTOMATED build (自動構建)的鏡像
# 展示列表有一列 OFFICIAL 表示的官方鏡像
docker search hello-world

# 下載鏡像
# 公式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# options 可以通過 --help查看
# 不寫後面的 tag 標籤的話默認下載最新版 Using default tag: latest
docker pull tomcat

# 刪除鏡像
# 公式:docker rmi [OPTIONS] IMAGE [IMAGE...]
# 鏡像後面不跟:tag 默認刪除的就是最新版 latest
docker rmi hello-world
# 如果正在鏡像正在運行會提示如下
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 3dac5402f803 is using its referenced image fce289e99eb9
# 可以通過 -f 參數強制刪除
docker rmi -f hello-world
# 刪除多個
docker rmi -f hello-world nginx
# 刪除所有,查詢出所有的鏡像id並刪除
docker rmi -f $(docker images -qa)

三、容器命令

# 有鏡像才能新建容器,這是前提(下載一個centOS鏡像用於演示)

# 新建並啓動交互式容器
# 公式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 常用 OPTIONS 
# --name="新容器名稱" 爲容器指定一個名稱
# -d 後臺運行,返回容器ID,也即是啓動守護式容器
# -i 啓動交互式容器,通常和 -t 一起使用
# -t 爲容器重新分配一個僞輸入終端, 通常和 -i 一起使用
# -P (大寫P)隨機端口映射
# -p 指定端口映射,有以下四種方式(docker ps 可以看到端口信息)
    # ip:hostPort:containerPort
    # ip::containerPort
    # hostPort:containerPort
    # containerPort
# 以 -P (大寫P)啓動tomcat
docker run -it -P tomcat
# 以 -p (小寫p)啓動tomcat
docker run -it -p 8888:8080 tomcat
# 最後的centos是鏡像名稱,也可以換成鏡像ID
docker run -it --name mycentos centos
# 以 /bin/bash (也是默認)方式啓動
docker run -it centos /bin/bash
# 以後臺守護式啓動(這種沒有前臺進程的容器,啓動後就會立即關閉)
docker run -d centos
# 注意:docker 容器後臺運行,就必須有一個前臺進程


# 列出當前所有正在運行的容器
# 公式:docker ps [OPTIONS]
# -a 列出當前正在運行的和歷史上運行過的鏡像
# -l 顯示最近創建的容器(上次運行的)
# -n 顯示最近創建的n個容器(上n此運行的)
# -q 靜默模式,只顯示容器編號
# --no-trunc 不截斷輸出
docker ps
#會出現一個列表
# 分別是:容器ID 鏡像名稱 命令方式 創建時間 運行時間 端口 名稱(運行的時候沒用通過 --name 指定的話,隨機生成一個名稱)

# 日誌查看
# 公式:docker logs [OPTIONS] CONTAINER
# -t 加入時間戳
# -f 跟隨最新的日誌打印
# --tail 數字顯示最後多少條
docker logs -t -f --tail 3 f732404b97bc
# 另外一種持續追加
docker logs -t -f f732404b97bc

# 查看容器內的進程
# 公式:docker top CONTAINER [ps OPTIONS]
docker top f732404b97bc

# 查看容器內細節
# 公式:docker inspect [OPTIONS] NAME|ID [NAME|ID...]
# 會以數組的形式展示信息,包含創建時間、ID等等信息
docker inspect f732404b97bc

# 從容器中拷貝文件到主機上
# 公式:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
# docker cp 容器id:容器內路徑 目的主機路徑
docker cp 73f7686bb553:/tmp/yum.log /root


# 退出容器
# 停止容器並退出
exit
# 退出但不停止容器
ctrl+P+Q

# 重新進入正在運行的容器,並以命令行交互,有兩種方式
# 第一種,公式:docker attach [OPTIONS] CONTAINER
docker attach 73f7686bb553
# 第二種,公式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 相當於啓動一個新的交互終端
docker exec -it 73f7686bb553 /bin/bash
# 直接執行命令,返回結果
docker exec -t 73f7686bb553 ls -l /tmp
########## 區別 #########
# attach 直接進入容器啓動命令的終端,不會啓動新的進程
# exec 在容器中打開新的終端,並且可以啓動新的進程

# 啓動容器
# 公式:docker start [CONTAINER ID]
docker start a47a95ca552a(容器ID)

# 重啓容器
# 公式:docker restart [CONTAINER ID]

# 停止容器
# 公式:docker stop [CONTAINER ID]

# 強制停止容器
# 公式:docker kill [CONTAINER ID]

# 刪除已停止的容器
# 公式:docker rm [CONTAINER ID]
# rm -f 代表強制刪除

# 批量刪除已停止的容器
# 公式:docker rm -f $(docker ps -a -q)
# 公式:docker ps -a -q | xargs docker rm

 

發佈了81 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章