目錄
- 前言
- docker常用命令
- 1 啟停類/幫助 命令
- 2鏡像命令
- 3 容器命令
- 結語
前言
本篇文章不僅僅是生硬的命令大全,也是我個人對docker學習使用的一步步總結,通過一個個示例來加深各位看官對docker相關命令的理解以及記憶,在有趣的同時穿插知識點,您花費半小時時間,照著我的思路走一遍,一定會有所收獲。
docker常用命令
列舉常用的命令,不常用的已省略。
1 啟停類/幫助 命令
- 啟動docker: systemctl start docker
- 停止docker: systemctl stop docker
- 重啟docker: systemctl restart docker
- 查看docker狀態: systemctl status docker
- 開機啟動: systemctl enable docker
- 查看docker概要信息: docker info
- 查看docker總體幫助文檔: docker –help
- 查看docker命令幫助文檔: docker 具體命令 –help
2鏡像命令
- 列出本地主機上的鏡像: docker images
同一倉庫源可以有多個 TAG版本,代表這個倉庫源的不同個版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
如果你不指定一個鏡像的版本標簽,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像
- 搜索鏡像: docker search [OPTIONS] 鏡像名字
OPTIONS說明:
–limit : 只列出N個鏡像,默認25個
如docker search –limit 5 redis
- 下載鏡像: docker pull 鏡像名稱[:TAG] #沒有TAG就是最新版
- 查看鏡像/容器/數據卷所占的空間: docker system df
- 刪除鏡像: docker rmi 鏡像ID
刪除單個
docker rmi -f 鏡像ID
刪除多個docker rmi -f 鏡像名1:TAG 鏡像名2:TAG
刪除全部
docker rmi -f $(docker images -qa)
面試知識點:什么docker虛懸鏡像?
答:倉庫名、標簽都是<none>的鏡像,俗稱虛懸鏡像dangling image
3 容器命令
- 有鏡像才能有容器,這里假設已通過
docker pull ubuntu
命令下載了ubuntu鏡像,后面的命令介紹基于此鏡像。 - 新建并啟動容器:
docker run [OPTIONS] ***IMAGE*** [COMMAND] [ARG...]
OPTIONS說明(常用):有些是一個減號(短杠),有些是兩個減號
–name=“容器新名字” 為容器指定一個名稱;
-d: 后臺運行容器并返回容器ID,也即啟動守護式容器(后臺運行);
-i:以交互模式運行容器,通常與 -t 同時使用;
-t:為容器重新分配一個偽輸入終端tty,通常與 -i 同時使用;
也即啟動交互式容器(前臺有偽終端,等待交互);
- 啟動交互式容器(前臺命令行)
#使用鏡像centos:latest以交互模式啟動一個容器,在容器內執行/bin/bash命令。
docker run -it centos /bin/bash
說明:/bin/bash:放在鏡像名后的是命令,這里我們希望有個交互式 Shell,因此用的是 /bin/bash。
- 列出當前所有正在運行的容器:
docker ps
- 退出容器
·兩種退出方式
·run進去容器,exit
退出,容器停止
·run進去容器,ctrl+p+q
退出,容器不停止
- 容器啟停
docker start 容器ID或者容器名
docker restart 容器ID或者容器名
docker stop 容器ID或者容器名
- 刪除容器
刪除已停止的容器
docker rm 容器ID
一次性刪除多個容器實例docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
- 啟動守護式容器(后臺服務端運行) docker run -d 容器名
好習慣:每次運行容器之后通過docker ps看一下容器是否啟動成功了
問題:docker run -d centos啟動centos守護容器,然后docker ps -a 進行查看, 會發現容器已經退出?
說明: 有的Docker容器后臺運行,就必須有一個前臺進程.容器運行的命令如果不是那些一直掛起的命令(比如運行top,tail),就是會自動退出的。
這個是docker的機制問題,最佳的解決方案是,將你要運行的程序以前臺進程的形式運行,常見就是命令行模式,表示我還有交互操作,別中斷。
如后臺運行nginx命令:
docker run -di –name=nginx -p 80:80 nginx
- 9. 查看容器日志:docker logs 容器ID
查看容器內部細節,返回JSON格式數據:docker inspect 容器ID
- 10. 退出容器后重新進入(進入正在運行的容器并以命令行交互):
docker exec -it 容器ID /bin/bash
docker attach 容器ID 不推薦
上述兩個容器進入命令exec和attach的區別:
- attach 直接進入容器啟動命令的終端,不會啟動新的進程,用exit退出,會導致容器的停止。
- exec 是在容器中打開新的終端,并且可以啟動新的進程 用exit退出,不會導致容器的停止。
推薦大家使用 docker exec 命令,因為退出容器終端,不會導致容器的停止。
- 11. 從容器內拷貝文件到主機上: docker cp 容器ID:容器內路徑 目的主機路徑
- 12. 導入導出容器
- export 導出容器的內容留作為一個tar歸檔文件[對應import命令]
- import 從tar包中的內容創建一個新的文件系統再導入為鏡像[對應export]
案例
docker export 容器ID > 文件名.tar
cat 文件名.tar | docker import – 鏡像用戶/鏡像名:鏡像版本號
結語
一個人可以走很快,但是一群人可以走更遠,大家一起抱團學習啊。