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

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

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

容器啟動流程

與多架構鏡像原理整合,就形成了完整的容器啟動流程。

容器運行的本質(zhì)

Docker 容器是為了運行容器中的應用,對外提供服務。

應用運行完畢后,容器就會自動終止。

如果不想讓容器啟動后立即終止,需要使容器應用不能立即結束。

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

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

容器有兩種運行模式:交互模式與分離模式。

以交互模式運行ubuntu

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

--name : 指定當前容器名稱為 myubuntu

-it : 指定以交互模式運行容器,且為容器分配一個偽終端。

后面的/bin/bash 用于指定容器啟動后要運行的命令。該命令會啟動一個bash終端。

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

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

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

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

以交互模式運行tomcat

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

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

# 正式啟動tomcat
docker run --name mytomcat8081 -it -p 8081:8080 tomcat:8.5.32

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

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

以分離模式運行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 表示以分離模式運行容器,即命令在后臺運行,命令的運行和宿主機的運行分離開來。

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

以分離模式運行ubuntu

docker run -d ubuntu:latest

該運行方式有一個問題:雖然容器啟動了,但是docker ps 命令查看不到。

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

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

容器創(chuàng)建命令

docker create 命令僅創(chuàng)建容器但不啟動,用法與docker run 非常相似。但是沒有-d 選項,因為docker create 默認是采用后臺方式運行的。

容器退出命令

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

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

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

容器再進行命令

exec/attach ,他們只能對正在運行的容器進行操作。

新建進程進入容器exec

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

外部操作容器exec

上面的方法是進入到容器之后才對容器進行操作,其實也可以不進入容器直接對容器進行操作。

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

docker exec -it mytomcat02 ls -l

容器附加標準輸入

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

容器附加標準輸出

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

此時的容器附加了標準輸出,只不過,其輸出的是tomcat的啟停日志信息。

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

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

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

#docker top 用于查看指定的正在運行的容器中的進程詳情,這個詳情包括當前正在運行的命令
docker top myubuntu
# 可以使用grep對結果進行過濾
docker top myubuntu | grep bin

容器日志查看命令

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

容器啟停命令

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

容器刪除命令

# 正常刪除:docker rm 在默認情況下,要刪除的容器必須是已停止的。
docker rm mytomcat
# 強制刪除:加-f ,無論容器是否停止,都會刪除
docker rm -f mytomcat
# 刪除所有容器
docker rm -f $(docker ps -qa)

容器與宿主機文件傳遞

將容器中文件復制到宿主機

#將mytomcat容器的tomcat中webapps 目錄復制到宿主機的當前目錄
docker cp mytomcat:/usr/local/tomcat/webapps ./

將宿主機文件復制到容器

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

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

提交容器為鏡像

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

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

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

生成懸虛鏡像

懸虛鏡像是沒有<repository>和<tag>的鏡像。

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

下面的命令就會生成一個懸虛鏡像。(沒指定<repository>和<tag>

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

導入導出容器

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

與save/load命令對比

export與save

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

import與load

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

與docker commit 對比

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

不同點:docker import + docker export 恢復的鏡像只包含原容器生成的一層分層;

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

docker system 命令集

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

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

相關文章

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

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

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

    詳解ASP.NET Core Docker部署

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

    Docker同時安裝MySQL和MariaDB的方法步驟

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

    mac上使用docker搭建gitlab全過程

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

    docker?search?mysql報錯問題分析及解決

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

    Docker部署Python應用的問題與優(yōu)化實踐

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

    docker搭建logstash和使用方法詳解

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

    使用 docker-compose 運行 MySQL的方法

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

    如何使用Docker部署最新版JupyterHub

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

    使用Docker安裝Jenkins的示例代碼

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

最新評論

横峰县| 平昌县| 肇东市| 鄂伦春自治旗| 威宁| 土默特右旗| 竹山县| 茶陵县| 原阳县| 德兴市| 肃北| 兴义市| 邵东县| 阿鲁科尔沁旗| 化隆| 荣成市| 武山县| 类乌齐县| 德令哈市| 横峰县| 华亭县| 石狮市| 延川县| 百色市| 乌拉特中旗| 沙坪坝区| 会同县| 南安市| 梧州市| 孟津县| 磐安县| 万山特区| 安溪县| 阳春市| 丰台区| 黑河市| 新密市| 亚东县| 九台市| 化州市| 平山县|