docker基礎篇-基礎命令

本次安裝的Docker 支持以下的 64 位 CentOS 7及以上版本:


docker基礎篇-基礎命令


以下命令都是親身試驗過的,童叟無欺:

查看docker日誌:

查看指定時間後的日誌,只顯示最後100行:

$ docker logs -f -t --since="2019-11-26T10:05:00.0z" --tail=100 容器名或者ID

將某個時間之後的日誌導入到固定文件中:

docker logs -f -t --since="2019-11-26T10:05:00.0z" --tail=100 容器名或者ID > /home/work/wangxy/log/test.log

查看最近30分鐘的日誌:

docker logs -t --since 30m 容器名或者ID (數據量大時可能反應較慢,慎用)

查看某時間段日誌:

docker logs -t --since 2020-01-08T08:39:57.0Z --until 2020-01-08T08:40:15.0Z CONTAINER_ID

// 關鍵字搜索日誌:

docker logs 容器名或者ID 2

-f :時時刷新

-t:加入時間戳

--tail 數字 :顯示最後多少條

注:使用時間的時候需按照以下格式:2020-01-08T08:39:57.0Z(秒後的0Z一定帶著)


docker幫助命令和docker鏡像命令

docker幫助命令:docker --help

  • 查看鏡像信息

docker已有鏡像信息:docker images

docker鏡像的ID:docker images -q

docker鏡像的所有ID:docker images -qa (a包含中間鏡像層)

docker鏡像的摘要信息:docker images --digests

docker鏡像的ID完整信息和鏡像的摘要信息:docker images --digests --no-trunc

  • 鏡像的搜索下載

搜索鏡像:docker search 某個鏡像的名字

docker search --filter=stars=30 tomcat 點贊數超過30的tomcat

下載鏡像:docker pull 某個鏡像的名字

docker pull tomcat 等價於 docker pull tomcat:latest

  • 刪除鏡像

刪除鏡像:docker rmi 某個鏡像的名字ID

docker rmi hello-world

強制刪除(運行中的也會刪除):docker rmi -f hello-world

強制刪除多個:docker rmi -f hello-world nginx (中間用空格隔開)

強制刪除多個指定版本的:docker rmi -f hello-world:latest nginx:latest

刪除全部:docker rmi -f $(docker images -qa)

docker容器中系統的運行與使用

  • 創建並啟動容器:

使用鏡像centos以交互式模式創建並啟動一個容器,並執行/bin/bash命令。

docker run -it centos /bin/bash

使用鏡像centos以交互式模式創建並啟動一個容器,並起一個別名mycentos。

docker run -it --name mycentos centos

使用鏡像centos:latest以後臺模式啟動一個容器。

docker run -d centos

隨機映射端口啟動tomcat

docker run -it -P tomcat

指定映射端口啟動tomcat

docker run -it -p 8888:8080 tomcat

(啟動tomcat後,輸入http://localhost:8888/ ,訪問tomcat主頁)

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

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

-P: 隨機端口映射,容器內部端口隨機映射到主機的高端口

-p: 指定端口映射,格式為:主機(宿主)端口:容器端口

-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

--name="nginx-lb": 為容器指定一個名稱;

  • 退出容器(進入交互式容器之後的退出):

容器停止退出: exit

容器不停止退出: ctrl +P+Q ,

再次進入容器:docker attach 容器名或者ID ,

或者在容器外執行容器中的命令 : docker exec -t 容器名或者ID ls -lrt

  • 啟動容器:

docker start 容器名或者ID

  • 停止容器:

docker stop 容器名或者ID

  • 重啟容器:

docker restart 容器名或者ID

  • 強制停止容器:

docker kill 容器名或者ID

  • 刪除已停止的容器:

刪除單個容器:docker rm (-f 強制刪除) 容器名或者ID

刪除所有容器:docker rm -f $(docker ps -aq)

顯示docker中容器狀態和進程

  • 查看容器狀態:docker ps (不加參數默認顯示正在運行的容器)
docker基礎篇-基礎命令

  • 查看容器內進程運行的狀態:docker top 容器名或容器ID
  • 查看容器內部細節:docker inspect 容器名或容器ID
  • 將容器內文件拷貝到宿主機上:

docker cp 容器名或容器ID:容器內路徑 宿主機路徑

docker cp ybz:/yao/yao.log /yao

製作鏡像:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要創建的目標鏡像名:[標籤名]

docker commit -a="yaobaizheng" -m=" a new tomcat with index" 80e337197933 yao/tomcat:1.0

課外知識

  • 使用鏡像centos以後臺模式啟動一個容器

問題:執行docker run -d centos ,然後docker ps -a進行查看,會發現容器已經退出。

說明:docker容器後臺運行,就必須有一個前臺進程。容器運行的命令如果不是那些一直掛起的命令(比如top、tail),就是會自動退出的。

解釋

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

但是這樣做,nginx為後臺進程模式運行,就導致docker前臺沒有運行的應用,這樣容器啟動後會立即自殺,因為他覺得沒事可做了。

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

docker run -d centos /bin/bash -c "while true;do echo hello world;sleep 2;done"



分享到:


相關文章: