日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Docker核心技术之容器详解

發布時間:2023/11/28 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker核心技术之容器详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、容器簡介

容器(Container):容器是一種輕量級、可移植、并將應用程序進行的打包的技術,使應用程序可以在幾乎任何地方以相同的方式運行 Docker將鏡像文件運行起來后,產生的對象就是容器。容器相當于是鏡像運行起來的一個實例。 容器具備一定的生命周期。 另外,可以借助docker ps命令查看運行的容器,如同在linux上利用ps命令查看運行著的進程那樣。

二、容器與虛擬機

Docker容器與虛擬機相同點

容器和虛擬機一樣,都會對物理硬件資源進行共享使用。

容器和虛擬機的生命周期比較相似(創建、運行、暫停、關閉等等)。

容器中或虛擬機中都可以安裝各種應用,如redis、mysql、nginx等。也就是說,在容器中的操作,如同在一個虛擬機(操作系統)中操作一樣。

同虛擬機一樣,容器創建后,會存儲在宿主機上:linux上位于/var/lib/docker/containers下

Docker容器與虛擬機不同點

注意:容器并不是虛擬機,但它們有很多相似的地方

虛擬機的創建、啟動和關閉都是基于一個完整的操作系統。一個虛擬機就是一個完整的操作系統。而容器直接運行在宿主機的內核上,其本質上以一系列進程的結合。

容器是輕量級的,虛擬機是重量級的。首先容器不需要額外的資源來管理(不需要Hypervisor、Guest OS),虛擬機額外更多的性能消耗;其次創建、啟動或關閉容器,如同創建、啟動或者關閉進程那么輕松,而創建、啟動、關閉一個操作系統就沒那么方便了。

也因此,意味著在給定的硬件上能運行更多數量的容器,甚至可以直接把Docker運行在虛擬機上。

? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ??

三、容器的生命周期

虛擬機的生命周期

容器的生命周期

四、容器的生命周期管理

容器創建 – docker create

作用: ?? ?利用鏡像創建出一個Created 狀態的待啟動容器

命令格式: ?? ?docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

命令參數(OPTIONS):-t, --tty ? ? ? ? ? ?? ??? ?分配一個偽TTY,也就是分配虛擬終端 ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-i, --interactive ? ??? ?即使沒有連接,也要保持STDIN打開 ? ? ? ? ? ?? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--name ? ? ? ? ??? ??? ?為容器起名,如果沒有指定將會隨機產生一個名稱

命令參數(COMMAND\ARG): ?? ?COMMAND 表示容器啟動后,需要在容器中執行的命令,如ps、ls 等命令 ?? ?ARG 表示執行 COMMAND 時需要提供的一些參數,如ps 命令的 aux、ls命令的-a等等

命令演示:

容器啟動 – docker start

作用: ?? ?將一個或多個處于創建狀態或關閉狀態的容器啟動起來

命令格式: ?? ?docker start [OPTIONS] CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ?-a, --attach?? ??? ?將當前shell的 STDOUT/STDERR 連接到容器上 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -i, --interactive?? ??? ?將當前shell的 STDIN連接到容器上

命令演示:

docker run 與 docker create + docker start

docker run 相當于 docker create + docker start –a ? ? ? 前臺模式

docker run -d 相當于 docker create + docker start ? ? ? 后臺模式

容器暫停 – docker pause

作用: ?? ?暫停一個或多個處于運行狀態的容器

命令格式: ?? ?docker pause CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ?無

命令演示:

容器取消暫停 – docker unpause

作用: ?? ?取消一個或多個處于暫停狀態的容器,恢復運行

命令格式: ?? ?docker unpause CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ?無

命令演示:

容器關閉 – docker stop

作用: ?? ?關閉一個或多個處于暫停狀態或者運行狀態的容器

命令格式: ?? ?docker stop [OPTIONS] CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ?-t, --time int ? ?? ??? ?關閉前,等待的時間,單位秒(默認 10s)

命令演示:

容器終止 – docker kill

作用: ?? ?強制并立即關閉一個或多個處于暫停狀態或者運行狀態的容器

命令格式: ?? ?docker kill [OPTIONS] CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ?-s, --signal string ? ?? ?指定發送給容器的關閉信號 (默認“KILL”信號)

命令演示:

docker stop和docker kill的區別

前提知識點:

Linux其中兩種終止進程的信號是:SIGTERM和SIGKILL

SIGKILL信號:無條件終止進程信號。進程接收到該信號會立即終止,不進行清理和暫存工作。該信號不能被忽略、處理和阻塞,它向系統管理員提供了可以殺死任何進程的方法。

SIGTERM信號:程序終結信號,可以由kill命令產生。與SIGKILL不同的是,SIGTERM信號可以被阻塞和終止,以便程序在退出前可以保存工作或清理臨時文件等。

docker stop 會先發出SIGTERM信號給進程,告訴進程即將會被關閉。在-t指定的等待時間過了之后,將會立即發出SIGKILL信號,直接關閉容器。

docker kill 直接發出SIGKILL信號關閉容器。但也可以通過-s參數修改發出的信號。

因此會發現在docker stop的等過過程中,如果終止docker stop的執行,容器最終沒有被關閉。而docker kill幾乎是立刻發生,無法撤銷。

此外還有些異常原因也會導致容器被關閉,比如docker daemon重啟、容器內部進程運行發生錯誤等等“異常原因”。

容器重啟 – docker restart

作用: ?? ?重啟一個或多個處于運行狀態、暫停狀態、關閉狀態或者新建狀態的容器 ?? ?該命令相當于stop和start命令的結合

命令格式: ?? ?docker restart [OPTIONS] CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ? -t, --time int ? ?? ??? ?重啟前,等待的時間,單位秒(默認 10s) ?? ??? ??? ??? ?實則是關閉前等待的時間

容器刪除 – docker container rm

作用: ?? ?刪除一個或多個容器

命令格式: ?? ?docker container rm [OPTIONS] CONTAINER [CONTAINER...] ? ? ? 或者 docker rm [OPTIONS] CONTAINER [CONTAINER...]

命令參數(OPTIONS): ?? ? -f, --force ? ? ?? ??? ?強行刪除容器(會使用 SIGKILL信號) ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-v, --volumes ? ?? ??? ?同時刪除綁定在容器上的數據卷?? ?

命令演示:

五、容器信息查看

容器詳細信息 – docker container inspect

作用: ?? ?查看本地一個或多個容器的詳細信息

命令格式: ?? ?docker container inspect [OPTIONS] CONTAINER [CONTAINER...] ? ? ? 或者 docker inspect [OPTIONS] CONTAINER [CONTAINER...]

命令參數(OPTIONS):?? ? ?? ?-f, --format string?? ?利用特定Go語言的format格式輸出結果 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -s, --size?? ??? ?顯示總大小

命令演示:

容器日志信息 – docker logs

作用: ?? ?查看容器的日志信息

命令格式: ?? ?docker logs [OPTIONS] CONTAINER

命令參數(OPTIONS):?? ? ?? ? ? ?--details?? ??? ?顯示日志的額外信息 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -f, --follow ? ? ? ? ?? ??? ?動態跟蹤顯示日志信息 ?? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --since string ??? ?只顯示某事時間節點之后的?? ? ??? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --tail string ? ??? ??? ?顯示倒數的行數(默認全部) ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -t, --timestamps ? ? ?? ?顯示timestamps時間 ?? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --until string ? ?? ?只顯示某事時間節點之前的

注意: ?? ?容器日志中記錄的是容器主進程的輸出STDOUT\STDERR

容器重命名 – docker rename

作用: ?? ?修改容器的名稱

命令格式: ?? ?docker rename CONTAINER NEW_NAME

命令參數(OPTIONS):?? ? ?? ?無

六、容器運行時操作

容器連接 – docker attach

作用: ?? ?將當前終端的STDIN、STDOUT、STDERR綁定到正在運行的容器的主進程上實現連接

命令格式: ?? ?docker attach [OPTIONS] CONTAINER

命令參數(OPTIONS):?? ? ?? ?--no-stdin ? ? ? ? ? ? ?? ?不綁定STDIN

容器中執行新命令 – docker exec

作用: ?? ?在容器中運行一個命令

命令格式: ?? ?docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

命令參數(OPTIONS):?? ? ?? ?-d, --detach ? ? ? ? ? ? ? ?? ?后臺運行命令 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -i, --interactive?? ??? ?即使沒連接容器,也將當前的STDIN綁定上 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -t, --tty ? ? ? ? ? ? ? ? ??? ?分配一個虛擬終端 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -w, --workdir string ? ? ? ?? ?指定在容器中的工作目錄 ?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -e, --env list ? ? ? ? ? ? ?? ?設置容器中運行時的環境變量

七、容器總結

容器的詳解到這結束,后面還有更深入的文章講解!

總結

以上是生活随笔為你收集整理的Docker核心技术之容器详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。