最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文系統(tǒng)梳理Docker中容器的常用命令

 更新時(shí)間:2026年05月29日 08:31:59   作者:NE_STOP  
這篇文章主要為大家詳細(xì)介紹了Docker容器中的常用命令,包括啟動(dòng)流程、容器運(yùn)行原理及容器日志查看方法并詳細(xì)解析DockerD架構(gòu)與鏡像原理,希望對(duì)大家有所幫助

容器啟動(dòng)流程

與多架構(gòu)鏡像原理整合,就形成了完整的容器啟動(dòng)流程。

容器運(yùn)行的本質(zhì)

Docker 容器是為了運(yùn)行容器中的應(yīng)用,對(duì)外提供服務(wù)。

應(yīng)用運(yùn)行完畢后,容器就會(huì)自動(dòng)終止。

如果不想讓容器啟動(dòng)后立即終止,需要使容器應(yīng)用不能立即結(jié)束。

通常才用兩種方式:使應(yīng)用處于與用戶交互的狀態(tài)等待狀態(tài)

容器創(chuàng)建并啟動(dòng)命令

容器有兩種運(yùn)行模式:交互模式與分離模式。

以交互模式運(yùn)行ubuntu

docker run --name myubuntu -it ubuntu:latest /bin/bash

--name : 指定當(dāng)前容器名稱(chēng)為 myubuntu

-it : 指定以交互模式運(yùn)行容器,且為容器分配一個(gè)偽終端。

后面的/bin/bash 用于指定容器啟動(dòng)后要運(yùn)行的命令。該命令會(huì)啟動(dòng)一個(gè)bash終端。

運(yùn)行命令后發(fā)現(xiàn) 命令行前面部分發(fā)生變化:

原來(lái)顯示的是【root@docker~】,現(xiàn)在變?yōu)閞oot@de0940ad17dd:/#,這就是docker生成的偽客戶端,而數(shù)字de0940ad17dd 表示docker容器ID。

此時(shí)就可以對(duì)ubuntu系統(tǒng)執(zhí)行命令了。

執(zhí)行exit 命令 可以退出應(yīng)用。

以交互模式運(yùn)行tomcat

docker run --name mytomcat8 -it tomcat:8.5.32 /bin/bash

通過(guò)ls -l 命令查看tomcat 根目錄下的文件,注意,不支持ll命令。

# 正式啟動(dòng)tomcat
docker run --name mytomcat8081 -it -p 8081:8080 tomcat:8.5.32

-p 指定端口映射,格式為 暴露給宿主機(jī)的端口:容器中應(yīng)用的端口

執(zhí)行后,tomcat啟動(dòng),此時(shí)可以在Windows的瀏覽器中通過(guò)ip:8081端口訪問(wèn)到tomcat.

以分離模式運(yùn)行tomcat

docker run --name tomcat01 -dp 8081:8080 tomcat:8.5.32
docker run --name tomcat02 -dp 8082:8080 tomcat:8.5.32
docker run --name tomcat03 -dp 8083:8080 tomcat:8.5.32

-d 表示以分離模式運(yùn)行容器,即命令在后臺(tái)運(yùn)行,命令的運(yùn)行和宿主機(jī)的運(yùn)行分離開(kāi)來(lái)。

現(xiàn)在已經(jīng)啟動(dòng)了3個(gè)tomcat容器,可以通過(guò)瀏覽器訪問(wèn)了。

以分離模式運(yùn)行ubuntu

docker run -d ubuntu:latest

該運(yùn)行方式有一個(gè)問(wèn)題:雖然容器啟動(dòng)了,但是docker ps 命令查看不到。

docker ps -a 命令可以查看到該容器,只不過(guò)其已經(jīng)退出了。

docker ps 查看的是up 狀態(tài)的容器。

容器創(chuàng)建命令

docker create 命令僅創(chuàng)建容器但不啟動(dòng),用法與docker run 非常相似。但是沒(méi)有-d 選項(xiàng),因?yàn)閐ocker create 默認(rèn)是采用后臺(tái)方式運(yùn)行的。

容器退出命令

# 退出并停止容器
exit
# 退出不停止容器 Ctrl+P+Q 快捷鍵

容器狀態(tài)查看命令

docker ps # 查看所有正在運(yùn)行的容器
docker ps -a # 查看所有容器
docker ps -q # 查看運(yùn)行中的容器id
docker ps -qa # 查看所有容器的ID
docker ps -l # 查看最后創(chuàng)建的容器
docker ps -n 3 # 查看最后創(chuàng)建的n個(gè)容器

容器再進(jìn)行命令

exec/attach ,他們只能對(duì)正在運(yùn)行的容器進(jìn)行操作。

新建進(jìn)程進(jìn)入容器exec

# 先以分離模式運(yùn)行tomcat容器
docker run --name mytom10 -dp 8081:8080 tomcat:8.5.32
# 使用exec命令進(jìn)入此容器
docker exec -it mytom10 /bin/bash
# 使用exit 退出容器,此時(shí)tomcat容器并未結(jié)束,說(shuō)明exec命令會(huì)創(chuàng)建一個(gè)新的進(jìn)程,exit只是結(jié)束了這個(gè)新建的進(jìn)程。
exit
對(duì)比項(xiàng)docker execdocker attach
進(jìn)程行為新建獨(dú)立進(jìn)程(非 PID1)連接容器主進(jìn)程 PID1
退出影響退出不影響容器,容器繼續(xù)運(yùn)行Ctrl+C 會(huì)停止容器;需 Ctrl+P+Q 安全分離
終端獨(dú)立性每個(gè) exec 都是獨(dú)立 shell多終端 attach 共享同一會(huì)話、同步輸出
常用場(chǎng)景日常進(jìn)容器調(diào)試、改配置、查日志看主進(jìn)程實(shí)時(shí)輸出、接回前臺(tái)交互容器

外部操作容器exec

上面的方法是進(jìn)入到容器之后才對(duì)容器進(jìn)行操作,其實(shí)也可以不進(jìn)入容器直接對(duì)容器進(jìn)行操作。

比如想查看tomcat容器工作目錄中的文件,直接在exec命令后緊跟執(zhí)行的命令即可

docker exec -it mytomcat02 ls -l

容器附加標(biāo)準(zhǔn)輸入

# 先以交互方式運(yùn)行一個(gè)ubuntu容器,然后使用Ctrl+p+q 命令退出但不停止容器
docker run --name myubuntu -it ubuntu:latest /bin/bash
# 然后使用attach 進(jìn)入容器命令行,此時(shí)再使用exit 命令退出容器。容器也就停止了。
# attach命令 沒(méi)有另外創(chuàng)建新進(jìn)程,而是使用了容器進(jìn)程,所以exit 命令結(jié)束當(dāng)前進(jìn)程后,容器就停止了。
docker attach myubuntu

容器附加標(biāo)準(zhǔn)輸出

啟動(dòng)一個(gè)tomcat容器(分離模式),然后執(zhí)行docker attach 可以看到:占用了命令行,但沒(méi)有任何輸出。

此時(shí)的容器附加了標(biāo)準(zhǔn)輸出,只不過(guò),其輸出的是tomcat的啟停日志信息。

docker run --name mytomcat -dp 8081:8080 tomcat:8.5.32
docker attach mytomcat

通過(guò)ctrl+C 可結(jié)束tomcat,此時(shí)能看到停止日志顯示出來(lái)。但是此時(shí)tomcat已經(jīng)停止,容器已經(jīng)退出,所以docker attach 命令也隨之結(jié)束了。

容器內(nèi)進(jìn)程查看命令

#docker top 用于查看指定的正在運(yùn)行的容器中的進(jìn)程詳情,這個(gè)詳情包括當(dāng)前正在運(yùn)行的命令
docker top myubuntu
# 可以使用grep對(duì)結(jié)果進(jìn)行過(guò)濾
docker top myubuntu | grep bin

容器日志查看命令

docker logs 【容器】# 查看指定容器中應(yīng)用的運(yùn)行日志,不論容器是運(yùn)行還是停止?fàn)顟B(tài)。
docker logs # 查看所有容器中應(yīng)用的運(yùn)行日志。
docker logs mytom3
# 選項(xiàng)-n 或--tail 可以指定要顯示的最后幾條日志
docker logs -n 5 mytomcat
# --since指定顯示從指定時(shí)間以來(lái)的日志。這個(gè)時(shí)間可以是絕對(duì)時(shí)間,也可以是相對(duì)時(shí)長(zhǎng)。
docker logs --since="2022-08-11" --tail=3 mytomcat	
# 顯示近30分鐘內(nèi)產(chǎn)生日志中的最后3條,m:分。s:秒;h:小時(shí)
docker logs --since=30m --tail=3 mytomcat
# --until 指定也要顯示截至到指定時(shí)間之前的日志,這個(gè)時(shí)間可以是絕對(duì)時(shí)間,也可以是相對(duì)時(shí)長(zhǎng)。
docker logs --until="2022-08-11" --tail=3 mytomcat	
# 截至到5分鐘之前的日志的最后3條		
docker logs --until=5m --tail=3 mytomcat
#查看日志的詳細(xì)時(shí)間戳,使用-t
docker logs -t --tail=3 mytomcat
#查看動(dòng)態(tài)日志,使用-f ,其會(huì)占用命令行,一直等待日志輸出
docker logs -f --tail=3 mytomcat

容器啟停命令

docker start myubuntu # 啟動(dòng)指定容器 
docker restart myubuntu # 重啟指定容器
docker stop myubuntu # 停止指定容器,如果當(dāng)前容器正在被其他進(jìn)程訪問(wèn),則在訪問(wèn)結(jié)束后再停止
docker kill myubuntu # 強(qiáng)制停止指定容器
# 停止所有容器,下面兩個(gè)命令都可以
docker stop $(docker ps -qa)
docker kill $(docker ps -qa)
docker pause myubuntu # 暫停指定容器對(duì)外提供服務(wù)
docker unpause myubuntu # 解除暫停

容器刪除命令

# 正常刪除:docker rm 在默認(rèn)情況下,要?jiǎng)h除的容器必須是已停止的。
docker rm mytomcat
# 強(qiáng)制刪除:加-f ,無(wú)論容器是否停止,都會(huì)刪除
docker rm -f mytomcat
# 刪除所有容器
docker rm -f $(docker ps -qa)

容器與宿主機(jī)文件傳遞

將容器中文件復(fù)制到宿主機(jī)

#將mytomcat容器的tomcat中webapps 目錄復(fù)制到宿主機(jī)的當(dāng)前目錄
docker cp mytomcat:/usr/local/tomcat/webapps ./

將宿主機(jī)文件復(fù)制到容器

#將宿主機(jī)當(dāng)前目錄下的hw.tar 文件復(fù)制到mytomcat 容器的/usr/local/tomcat 目錄中
# 要查看容器中是否存在hw.tar文件,需要先啟動(dòng)該容器
docker cp ./hw.tar mytomcat:/usr/local/tomcat

docker cp 不支持容器間的文件傳遞。

提交容器為鏡像

docker commit 命令可愿意將一個(gè)容器文件系統(tǒng)的當(dāng)前快照生成為一個(gè)新的鏡像。

需求:現(xiàn)在centOS容器中安裝net-tools工具包。

# 1. 先啟動(dòng)一個(gè)容器
docker run --name mycentOS -it centos:7
# 2. 安裝net-tools 網(wǎng)絡(luò)工具包
yum install -y net-tools
# 3.  執(zhí)行 ifconfig,發(fā)現(xiàn)可以使用
ifconfig
# 4. 生成鏡像,生成鏡像的<repository>是centos7,<tag>是net-tools
# -a:表示作者  -m:表示提交時(shí)填的message
docker commit -a “TOM” -m “ADD net-tools” mycentOS centos7:net-tools
# 5. 然后就可以使用了
docker run --name mycuscentos -it centos7:net-tools

生成懸虛鏡像

懸虛鏡像是沒(méi)有<repository>和<tag>的鏡像。

懸虛鏡像一般是由一些失誤操作產(chǎn)生的副產(chǎn)物,一般要被清除掉。如果非要使用,只能通過(guò)imageID來(lái)使用。

下面的命令就會(huì)生成一個(gè)懸虛鏡像。(沒(méi)指定<repository>和<tag>

docker commit -a “TOM” -m “ADD net-tools” mycentOS

導(dǎo)入導(dǎo)出容器

# 將tomcat:8.5.32鏡像的容器tom 導(dǎo)出到當(dāng)前/root目錄的tomcat8.tar文件中
docker export -o tomcat8.tar tom
# docker import 用于將指定的tar文件構(gòu)建新的鏡像。
docker import tomcat8.tar mytomcat:1.0

與save/load命令對(duì)比

export與save

  • export作用于容器,save作用在鏡像,但他們導(dǎo)出的結(jié)果都是tar文件
  • export一次只能導(dǎo)出一個(gè)容器;save一次可導(dǎo)出多個(gè)鏡像
  • export只對(duì)當(dāng)前容器的文件系統(tǒng)快照進(jìn)行導(dǎo)出,其會(huì)丟棄原鏡像的所有歷史記錄與元數(shù)據(jù)信息;save則保存了原鏡像的完整記錄

import與load

  • import導(dǎo)入的是容器;load加載的是鏡像,但最后都恢復(fù)為鏡像
  • import恢復(fù)的鏡像只包含當(dāng)前鏡像一層;load恢復(fù)的鏡像與原鏡像的分層相同
  • import恢復(fù)的鏡像是新鏡像,和原鏡像的imageID不同;load恢復(fù)的鏡像與原鏡像相同,imageID相同
  • import可以為導(dǎo)入的鏡像指定<repository>和<tag>;而load不行

與docker commit 對(duì)比

相同點(diǎn):docker import + docker export 和docker commit 都能將一個(gè)容器變?yōu)橐粋€(gè)鏡像

不同點(diǎn):docker import + docker export 恢復(fù)的鏡像只包含原容器生成的一層分層;

? docker commit 生成的鏡像中包含原鏡像的所有分層。

docker system 命令集

docker system df # 查看docker 各部分的磁盤(pán)占用數(shù)據(jù)
docker system df -v # 查看docker 各部分的磁盤(pán)占用數(shù)據(jù),數(shù)據(jù)更加詳細(xì)
# 查看docker 發(fā)生過(guò)的事件,可以查看指定日期之外(--until)或之內(nèi)(--since)
docker system events --since="2022-11-13"
# 查看docker詳情: docker info 和docker system info 的效果一樣
docker info
docker system info
# 刪除docker 中無(wú)用的數(shù)據(jù)(比如:已經(jīng)停止的容器、沒(méi)連任何容器的網(wǎng)絡(luò)、懸虛鏡像等)
docker system prune

以上就是一文系統(tǒng)梳理Docker中容器的常用命令的詳細(xì)內(nèi)容,更多關(guān)于Docker容器常用命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • cgroup?blkio子系統(tǒng)對(duì)容器的讀寫(xiě)限速詳解

    cgroup?blkio子系統(tǒng)對(duì)容器的讀寫(xiě)限速詳解

    這篇文章主要為大家介紹了cgroup?blkio子系統(tǒng)對(duì)容器的讀寫(xiě)限速詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 詳解ASP.NET Core Docker部署

    詳解ASP.NET Core Docker部署

    這篇文章主要介紹了詳解ASP.NET Core Docker部署。詳細(xì)介紹了如何在Docker容器中運(yùn)行ASP.NET Core應(yīng)用程序。有興趣的可以了解一下。
    2016-12-12
  • Docker同時(shí)安裝MySQL和MariaDB的方法步驟

    Docker同時(shí)安裝MySQL和MariaDB的方法步驟

    這篇文章主要介紹了Docker同時(shí)安裝MySQL和MariaDB的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • mac上使用docker搭建gitlab全過(guò)程

    mac上使用docker搭建gitlab全過(guò)程

    本文詳細(xì)介紹了在Mac上使用Docker搭建GitLab的過(guò)程,包括安裝Docker、拉取GitLab鏡像、啟動(dòng)容器、訪問(wèn)和配置GitLab等步驟,同時(shí),還提供了重置管理員密碼的方法,幫助解決常見(jiàn)問(wèn)題
    2024-11-11
  • docker?search?mysql報(bào)錯(cuò)問(wèn)題分析及解決

    docker?search?mysql報(bào)錯(cuò)問(wèn)題分析及解決

    Docker是現(xiàn)在非常流行的一種容器化技術(shù),能夠方便開(kāi)發(fā)者將應(yīng)用程序打包進(jìn)入容器,做到跨平臺(tái)的部署,這篇文章主要介紹了docker?search?mysql報(bào)錯(cuò)問(wèn)題分析及解決的相關(guān)資料,需要的朋友可以參考下
    2025-11-11
  • Docker部署Python應(yīng)用的問(wèn)題與優(yōu)化實(shí)踐

    Docker部署Python應(yīng)用的問(wèn)題與優(yōu)化實(shí)踐

    作為一個(gè)經(jīng)常用Docker部署Python應(yīng)用的開(kāi)發(fā)者,大家肯定遇到過(guò)改了一行代碼,重新打包鏡像,然后眼睜睜看著Docker重新下載幾百M(fèi)B的依賴(lài)包,本文就來(lái)和大家講講如何優(yōu)化這一問(wèn)題吧
    2025-05-05
  • docker搭建logstash和使用方法詳解

    docker搭建logstash和使用方法詳解

    這篇文章主要介紹了docker搭建logstash和使用方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • 使用 docker-compose 運(yùn)行 MySQL的方法

    使用 docker-compose 運(yùn)行 MySQL的方法

    這篇文章主要介紹了使用 docker-compose 運(yùn)行 MySQL的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 如何使用Docker部署最新版JupyterHub

    如何使用Docker部署最新版JupyterHub

    本文介紹了如何使用Docker部署最新版JupyterHub,包括拉取鏡像、啟動(dòng)容器、生成配置文件、安裝依賴(lài)、創(chuàng)建用戶、更改權(quán)限、更新配置文件以及訪問(wèn)驗(yàn)證等步驟,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 使用Docker安裝Jenkins的示例代碼

    使用Docker安裝Jenkins的示例代碼

    這篇文章主要介紹了使用Docker安裝Jenkins的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論

绥化市| 十堰市| 双江| 安溪县| 兴和县| 惠来县| 鄄城县| 连州市| 四子王旗| 彭阳县| 昌宁县| 台东市| 饶河县| 乐清市| 嘉峪关市| 乌拉特中旗| 黄平县| 渭南市| 靖州| 砚山县| 陵水| 驻马店市| 临颍县| 高尔夫| 石渠县| 苏尼特左旗| 新宁县| 聂拉木县| 罗江县| 清涧县| 万年县| 黄龙县| 绥芬河市| 宜丰县| 邯郸县| 青铜峡市| 孙吴县| 陆河县| 东安县| 哈尔滨市| 通河县|