Docker常用命令總結大全(推薦!)
一、幫助啟動類命令
(1)啟動docker
systemctl start docker
(2)停止docker
systemctl stop docker
(3)重啟docker
systemctl restart docker
(4)查看docker
systemctl status docker
(5)設置開機自啟
systemctl enable docker
(6)查看docker概要信息
docker info
(7)查看docker總體幫助文檔
docker --help
(8)查看docker命令幫助文檔
docker 命令 --help example: docker run --help
二、鏡像命令
(1)docker images
列出本地主機上有的鏡像
docker images [OPTIONS] 常用參數(shù): -a :列出所有的鏡像 (含歷史映像層) -q :只顯示鏡像ID example: docker images -a docker images -q docker images -aq docker images redis #查找鏡像名為redis的鏡像 docker images redis:6.0.8 #查找鏡像名:版本號(REPOSITORY:TAG)對應的鏡像
字段解析:
- REPOSITORY:表示鏡像的倉庫源
- TAG:鏡像的標簽版本號
- IMAGE ID:鏡像ID
- CREATED:鏡像創(chuàng)建時間
- SIZE:鏡像大小
同一倉庫源可以有多個 TAG版本,代表這個倉庫源的不同個版本,我們使用REPOSITORY:TAG 來定義不同的鏡像。
如果你不指定一個鏡像的版本標簽,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像
(2)docker search
去配置的鏡像網(wǎng)站庫找尋找某個鏡像,比如:Docker
docker search [OPTIONS] 鏡像名字 常用參數(shù): --limit nu #只輸出查到的前nu條記錄 example: docker search redis docker search --limit 3 redis docker search redis --limit 3 # 放在鏡像名稱前面后面均可
字段解析:
- NAME:鏡像名稱
- DISCRIPTION:鏡像說明
- STARTS:點贊數(shù)
- OFFICAL:是否是官方認可的
- AUTOMATED:是否自動構建
(3)docker pull
從遠程庫拉取鏡像
docker pull 鏡像名字[:TAG] example: docker pull redis:6.0.8 docker pull ubuntu # 沒有指定版本即拉取最新版 即默認為 ubuntu:latest
(4)docker system df
查看鏡像/容器/數(shù)據(jù)卷所占的空間
docker system df
(5)docker rmi
刪除本地有的鏡像
#刪除單個 docker rmi 鏡像ID #刪除鏡像,如果此時鏡像上面有容器正在運行,會報錯無法刪除 docker rmi -f 鏡像ID #強制(forced)刪除鏡像 #刪除多個 docker rmi -f 鏡像名1:TAG 鏡像名2:TAG #刪除全部(慎用) docker rmi -f $(docker images -qa) #首先docker images -qa會列舉本地所有的鏡像的ID,然后作為一個集合送入rmi一個個刪除
(6)docker commit
Docker中的鏡像分層,支持通過擴展現(xiàn)有鏡像,創(chuàng)建新的鏡像。我們進行擴展后提交到本地成為一個新的鏡像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要創(chuàng)建的目標鏡像名:[標簽名] example: docker pull ubuntu # 從鏡像倉庫拉取基礎ubuntu鏡像(支持擴展),原始的默認Ubuntu鏡像是不帶著vim命令的 #外網(wǎng)聯(lián)通的情況下,在容器內(nèi)安裝vim命令 apt-get update apt-get -y install vim #安裝完成后,commit我們自己的新鏡像 docker commit -m="ubuntu-add-vim" -a="zjy" a4b1b1cc54f0 atguigu/myubuntu:1.3
提交結果,可以明顯的看到SIZE變大了
(7)docker build
通過Dcokerfile構建鏡像
docker build -t 新鏡像名字:TAG . # 注意 TAG后面有個空格,有個點 example: docker build -t centosjava8:1.5 .
三、容器命令
(1)docker run
新建啟動容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 常用參數(shù): --name=NAME #為容器指定名字為NAME,不使用的話系統(tǒng)自動為容器命名 -d: 后臺運行容器并返回容器ID,也即啟動守護式容器(后臺運行); -i:以交互模式運行容器,通常與 -t 同時使用; -t:為容器重新分配一個偽輸入終端,通常與 -i 同時使用; 也即啟動交互式容器(前臺有偽終端,等待交互,一般連用,即-it); -P: 隨機端口映射,大寫P -p: 指定端口映射,小寫p example: 以ubuntu為例,啟動后要交互先聲明交互模式,其次交互得需要一個終端,因此參數(shù)為-it docker run -it ubuntu /bin/bash 指定名稱 docker run -it --name=myubuntu ubuntu /bin/bash
啟動守護式容器
在大部分的場景下,我們希望 docker 的服務是在后臺運行的,
我們可以過 -d 指定容器的后臺運行模式。
docker run -d 容器名 example: docker run -d redis:6.0.8 docker run -d ubuntu
注意
上面的docker run -d ubuntu 執(zhí)行后,使用docker ps -a進行查看,會發(fā)現(xiàn)容器已經(jīng)退出
很重要的要說明的一點: Docker容器后臺運行,就必須有一個前臺進程.
這個是docker的機制問題,比如你的web容器,我們以nginx為例,正常情況下,我們配置啟動服務只需要啟動響應的service即可。例如service nginx start。但是,這樣做,nginx為后臺進程模式運行,就導致docker前臺沒有運行的應用, 這樣的容器后臺啟動后,會立即自殺,因為它覺得他沒事可做了.
最佳的解決方案是,將你要運行的程序以前臺進程的形式運行,常見就是命令行模式,類似centos、ubuntu
(2)docker ps
docker ps [OPTIONS] 常用參數(shù): -a :列出當前所有正在運行的容器+歷史上運行過的 -l :顯示最近創(chuàng)建的容器。 -n nu:顯示最近nu個創(chuàng)建的容器。 -q :靜默模式,只顯示容器編號。 example: docker ps -aq docker ps -n 3 docker ps -l
(3)退出容器
① exit
run進去容器,exit退出,容器停止
② ctrl+p+q
run進去容器,ctrl+p+q退出,容器不停止
(4)進入正在運行的容器并以命令行交互
① docker exec -it 容器ID/容器名稱 bashShell
② docker attach 容器ID
example: #容器ID docker exec -it c32f612cc218 /bin/bash docker attach c32f612cc218 #容器名稱 docker exec -it wizardly_booth /bin/bash docker attach wizardly_booth
區(qū)別
exec 是在容器中打開新的終端,并且可以啟動新的進程。用exit退出,不會導致容器的停止。
attach 直接進入容器啟動命令的終端,不會啟動新的進程。用exit退出,會導致容器的停止。
推薦大家使用 docker exec 命令,因為退出容器終端,不會導致容器的停止。
(5)啟動已停止運行的容器
docker start 容器ID或者容器名
(6)重啟容器
docker restart 容器ID或者容器名
(7)停止容器
docker stop 容器ID或者容器名
(8)強制停止容器
docker kill 容器ID或容器名
(9)刪除已停止的容器
#刪除一個 docker rm 容器ID docker rm -f 容器ID #強制刪除 #刪除多個 docker rm -f $(docker ps -a -q) 或 docker ps -a -q | xargs docker rm
(10)查看容器日志
docker logs 容器ID
(11)查看容器內(nèi)運行的進程
docker top 容器ID
(12)查看容器內(nèi)部細節(jié)
docker inspect 容器ID
(13)從容器內(nèi)拷貝文件到主機上
docker cp 容器ID:容器內(nèi)路徑 目的主機路徑 example: #以ubuntu為例,我們在/tmp目錄下通過touch a.txt創(chuàng)建a文本,將其復制到本機download目錄下 docker cp 958443b97285:/tmp/a.txt /download
(14)導入和導出容器
export 導出容器的內(nèi)容留作為一個tar歸檔文件[對應import命令]
import 從tar包中的內(nèi)容創(chuàng)建一個新的文件系統(tǒng)再導入為鏡像[對應export]
docker export 容器ID > 文件名.tar cat 文件名.tar | docker import - 鏡像用戶/鏡像名:鏡像版本號 example: #以ubuntu為例 docker export 958443b97285 > abcd.tar cat abcd.tar | docker import - atguigu/ubuntu:3.7 # 注意 - 左右有分別有一個空格
(15)容器數(shù)據(jù)卷掛載
將docker容器內(nèi)的數(shù)據(jù)保存進宿主機的磁盤中
# 運行一個帶有容器卷存儲功能的容器實例 docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內(nèi)目錄:[OPTION] 鏡像名 OPTION: rw 可讀可寫(read + write) ro 容器實例內(nèi)部被限制,只能讀取不能寫,僅讀(read only) example: docker run -it --privileged=true --name=u1 -v /tmp/docker_data:/tmp/dockertest:ro ubuntu /bin/bash docker run -it --privileged=true --name=u2 -v /tmp/docker_data:/tmp/dockertest ubuntu /bin/bash # 不寫OPTION默認rw
掛載后可通過【docker inspect 容器ID】查看是否掛載成功
(16)容器數(shù)據(jù)卷繼承
docker run -it --privileged=true --volumes-from 父類 --name u2 ubuntu example: # 新創(chuàng)建u3容器繼承u2容器的數(shù)據(jù)卷掛載,此時u2就算stop也不影響u3 docker run -it --privileged=true --volumes-from u2 --name u3 ubuntu
(17)查看容器資源占用情況
顯示容器資源的使用情況,包括:CPU、內(nèi)存、網(wǎng)絡 I/O 等。
docker stats [OPTIONS] [CONTAINER...] OPTIONS: --all , -a :顯示所有的容器,包括未運行的。 --format :指定返回值的模板文件。 --no-stream :展示當前狀態(tài)就直接退出了,不再實時更新。 --no-trunc :不截斷輸出。 example: docker stats docker stats mynginx # 容器名 docker stats af7928654200 # 容器ID
字段解析:
- CONTAINER ID 與 NAME: 容器 ID 與名稱。
- CPU % 與 MEM %: 容器使用的 CPU 和內(nèi)存的百分比。
- MEM USAGE / LIMIT: 容器正在使用的總內(nèi)存,以及允許使用的內(nèi)存總量。
- NET I/O: 容器通過其網(wǎng)絡接口發(fā)送和接收的數(shù)據(jù)量。
- BLOCK I/O: 容器從主機上的塊設備讀取和寫入的數(shù)據(jù)量。
- PIDs: 容器創(chuàng)建的進程或線程數(shù)。
注意:
docker stats統(tǒng)計結果只能是當前宿主機的全部容器,數(shù)據(jù)資料是實時的,沒有地方存儲、沒有健康指標過線預警等功能,如果現(xiàn)象要實現(xiàn)監(jiān)控數(shù)據(jù)持久化并以圖表等形式展現(xiàn),可以使用CIG,即CAdvisor監(jiān)控收集+InfluxDB存儲數(shù)據(jù)+Granfana展示圖表
(18)Docker save
docker save 命令用于將 Docker鏡像 保存成 tar 包。
docker save [OPTIONS] IMAGE [IMAGE...] docker save 鏡像名:版本號 -o 打包壓縮存放位置 OPTIONS: docker save -o, --output 將歸檔文件輸出到的文件。 example: docker save 67fa590cfc1c -o haicoder_centos.tar //打包到當前目錄下
(19)Docker load
docker load 命令用于從 tar 歸檔文件或者標準輸入流載入鏡像。docker load 命令的相對應的命令為 docker save。
docker load [OPTIONS] OPTIONS: -i 指定導出的文件。 -q 精簡輸出信息。 docker load -i haicoder_centos.tar // 將歸檔的鏡像文件,載入到鏡像。
四、docker網(wǎng)絡命令
(1)查看網(wǎng)絡
docker network ls
(2)創(chuàng)建網(wǎng)絡
docker network create xxx網(wǎng)絡名字
(3)查看網(wǎng)絡源數(shù)據(jù)
docker network inspect XXX網(wǎng)絡名字
(4)刪除網(wǎng)絡
docker network rm XXX網(wǎng)絡名字
五、Docker-compose容器編排命令
docker-compose -h # 查看幫助 docker-compose up # 啟動所有docker-compose服務 docker-compose up -d # 啟動所有docker-compose服務并后臺運行 docker-compose down # 停止并刪除容器、網(wǎng)絡、卷、鏡像。 docker-compose exec yml里面的服務id # 進入容器實例內(nèi)部 docker-compose exec docker-compose.yml文件中寫的服務id /bin/bash docker-compose ps # 展示當前docker-compose編排過的運行的所有容器 docker-compose top # 展示當前docker-compose編排過的容器進程 docker-compose logs yml里面的服務id # 查看容器輸出日志 docker-compose config # 檢查配置 docker-compose config -q # 檢查配置,有問題才有輸出 docker-compose restart # 重啟服務 docker-compose start # 啟動服務 docker-compose stop # 停止服務
總結
到此這篇關于Docker常用命令總結的文章就介紹到這了,更多相關Docker常用命令總結內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA 集成 docker 實現(xiàn)遠程部署的詳細步驟
使用命令 vim /usr/lib/systemd/system/docker.service登錄docker所在的遠程服務器,本文重點給大家介紹IDEA 集成 docker 實現(xiàn)遠程部署的詳細步驟,需要的朋友參考下吧2021-07-07Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解
這篇文章主要介紹了Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解的相關資料,需要的朋友可以參考下2022-10-10docker-compose build使用參數(shù)args方式
這篇文章主要介紹了docker-compose build使用參數(shù)args方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01