docker的常用命令詳解
前言
本篇文章不僅僅是生硬的命令大全,也是我個(gè)人對(duì)docker學(xué)習(xí)使用的一步步總結(jié),通過(guò)一個(gè)個(gè)示例來(lái)加深各位看官對(duì)docker相關(guān)命令的理解以及記憶,在有趣的同時(shí)穿插知識(shí)點(diǎn),您花費(fèi)半小時(shí)時(shí)間,照著我的思路走一遍,一定會(huì)有所收獲。
docker常用命令
列舉常用的命令,不常用的已省略。
1 啟停類/幫助 命令
- 啟動(dòng)docker: systemctl start docker
- 停止docker: systemctl stop docker
- 重啟docker: systemctl restart docker
- 查看docker狀態(tài): systemctl status docker
- 開(kāi)機(jī)啟動(dòng): systemctl enable docker
- 查看docker概要信息: docker info
- 查看docker總體幫助文檔: docker --help
- 查看docker命令幫助文檔: docker 具體命令 --help
2鏡像命令
- 列出本地主機(jī)上的鏡像: docker images
同一倉(cāng)庫(kù)源可以有多個(gè) TAG版本,代表這個(gè)倉(cāng)庫(kù)源的不同個(gè)版本,我們使用 REPOSITORY:TAG 來(lái)定義不同的鏡像。
如果你不指定一個(gè)鏡像的版本標(biāo)簽,例如你只使用 ubuntu,docker 將默認(rèn)使用 ubuntu:latest 鏡像
- 搜索鏡像: docker search [OPTIONS] 鏡像名字
OPTIONS說(shuō)明:
–limit : 只列出N個(gè)鏡像,默認(rèn)25個(gè)
如docker search --limit 5 redis
- 下載鏡像: docker pull 鏡像名稱[:TAG] #沒(méi)有TAG就是最新版
- 查看鏡像/容器/數(shù)據(jù)卷所占的空間: docker system df
- 刪除鏡像: docker rmi 鏡像ID
刪除單個(gè)
docker rmi -f 鏡像ID
刪除多個(gè)docker rmi -f 鏡像名1:TAG 鏡像名2:TAG
刪除全部
docker rmi -f $(docker images -qa)
面試知識(shí)點(diǎn):什么docker虛懸鏡像?
答:倉(cāng)庫(kù)名、標(biāo)簽都是<none>的鏡像,俗稱虛懸鏡像dangling image
3 容器命令
- 有鏡像才能有容器,這里假設(shè)已通過(guò)
docker pull ubuntu
命令下載了ubuntu鏡像,后面的命令介紹基于此鏡像。 - 新建并啟動(dòng)容器:
docker run [OPTIONS] ***IMAGE*** [COMMAND] [ARG...]
OPTIONS說(shuō)明(常用):有些是一個(gè)減號(hào)(短杠),有些是兩個(gè)減號(hào)
–name=“容器新名字” 為容器指定一個(gè)名稱;
-d: 后臺(tái)運(yùn)行容器并返回容器ID,也即啟動(dòng)守護(hù)式容器(后臺(tái)運(yùn)行);
-i:以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
-t:為容器重新分配一個(gè)偽輸入終端tty,通常與 -i 同時(shí)使用;
也即啟動(dòng)交互式容器(前臺(tái)有偽終端,等待交互);
- 啟動(dòng)交互式容器(前臺(tái)命令行)
#使用鏡像centos:latest以交互模式啟動(dòng)一個(gè)容器,在容器內(nèi)執(zhí)行/bin/bash命令。
docker run -it centos /bin/bash
說(shuō)明:/bin/bash:放在鏡像名后的是命令,這里我們希望有個(gè)交互式 Shell,因此用的是 /bin/bash。
- 列出當(dāng)前所有正在運(yùn)行的容器:
docker ps
- 退出容器
·兩種退出方式
·run進(jìn)去容器,exit
退出,容器停止
·run進(jìn)去容器,ctrl+p+q
退出,容器不停止
- 容器啟停
docker start 容器ID或者容器名
docker restart 容器ID或者容器名
docker stop 容器ID或者容器名
- 刪除容器
刪除已停止的容器
docker rm 容器ID
一次性刪除多個(gè)容器實(shí)例docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
- 啟動(dòng)守護(hù)式容器(后臺(tái)服務(wù)端運(yùn)行) docker run -d 容器名
好習(xí)慣:每次運(yùn)行容器之后通過(guò)docker ps看一下容器是否啟動(dòng)成功了
問(wèn)題:docker run -d centos啟動(dòng)centos守護(hù)容器,然后docker ps -a 進(jìn)行查看, 會(huì)發(fā)現(xiàn)容器已經(jīng)退出?
說(shuō)明: 有的Docker容器后臺(tái)運(yùn)行,就必須有一個(gè)前臺(tái)進(jìn)程.容器運(yùn)行的命令如果不是那些一直掛起的命令(比如運(yùn)行top,tail),就是會(huì)自動(dòng)退出的。
這個(gè)是docker的機(jī)制問(wèn)題,最佳的解決方案是,將你要運(yùn)行的程序以前臺(tái)進(jìn)程的形式運(yùn)行,常見(jiàn)就是命令行模式,表示我還有交互操作,別中斷。
如后臺(tái)運(yùn)行nginx命令:
docker run -di --name=nginx -p 80:80 nginx
- 9. 查看容器日志:docker logs 容器ID
查看容器內(nèi)部細(xì)節(jié),返回JSON格式數(shù)據(jù):docker inspect 容器ID
- 10. 退出容器后重新進(jìn)入(進(jìn)入正在運(yùn)行的容器并以命令行交互):
docker exec -it 容器ID /bin/bash
docker attach 容器ID 不推薦
上述兩個(gè)容器進(jìn)入命令exec和attach的區(qū)別:
- attach 直接進(jìn)入容器啟動(dòng)命令的終端,不會(huì)啟動(dòng)新的進(jìn)程,用exit退出,會(huì)導(dǎo)致容器的停止。
- exec 是在容器中打開(kāi)新的終端,并且可以啟動(dòng)新的進(jìn)程 用exit退出,不會(huì)導(dǎo)致容器的停止。
推薦大家使用 docker exec 命令,因?yàn)橥顺鋈萜鹘K端,不會(huì)導(dǎo)致容器的停止。
- 11. 從容器內(nèi)拷貝文件到主機(jī)上: docker cp 容器ID:容器內(nèi)路徑 目的主機(jī)路徑
- 12. 導(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)
結(jié)語(yǔ)
一個(gè)人可以走很快,但是一群人可以走更遠(yuǎn),大家一起抱團(tuán)學(xué)習(xí)啊。
到此這篇關(guān)于docker的常用命令詳解的文章就介紹到這了,更多相關(guān)docker常用命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Dockerfile部署nodejs服務(wù)的方法步驟
這篇文章主要介紹了使用Dockerfile部署nodejs服務(wù)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Docker 實(shí)現(xiàn)容器端口綁定本地端口
這篇文章主要介紹了Docker 實(shí)現(xiàn)容器端口綁定本地端口的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問(wèn)題
這篇文章主要介紹了docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08.netcore 使用surging框架發(fā)布到docker
這篇文章主要介紹了netcore 使用surging框架發(fā)布到docker,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03docker無(wú)法刪除鏡像報(bào)Error:?No?such?container的錯(cuò)誤問(wèn)題
docker無(wú)法刪除鏡像的解決方法很簡(jiǎn)單,只需要簡(jiǎn)單三步即可完美解決docker刪除鏡像過(guò)程中,一直報(bào)Error:?No?such?container的錯(cuò)誤問(wèn)題,感興趣的朋友跟隨小編一起看看吧2023-01-01Windows Docker部署Jenkins的實(shí)現(xiàn)步驟
Jenkins是一款開(kāi)源的持續(xù)集成工具,廣泛用于項(xiàng)目開(kāi)發(fā),能提供自動(dòng)構(gòu)建測(cè)試部署等功能,本文主要介紹了Windows Docker部署Jenkins的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-03-03windows server 2016安裝docker的方法步驟
這篇文章主要介紹了windows server 2016安裝docker的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題
這篇文章主要介紹了docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01