本次安裝的Docker 支持以下的 64 位 CentOS 7及以上版本:
![docker基礎篇-基礎命令](http://p2.ttnews.xyz/loading.gif)
以下命令都是親身試驗過的,童叟無欺:
查看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基礎篇-基礎命令](http://p2.ttnews.xyz/loading.gif)
- 查看容器內進程運行的狀態: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"
閱讀更多 逆勢生長向陽而生 的文章