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