搜尋
首頁運維Docker完全掌握Docker學習之容器的使用

這篇文章為大家帶來了關於docker中容器的使用,希望對大家有幫助。

完全掌握Docker學習之容器的使用

運行一個容器

#如果你想要找到一個現有的鏡像,可以在公開的Docker Hub 上搜索,這裡可以找到它的介紹和用法,就像在GitHub 上找一個開源專案一樣。

完全掌握Docker學習之容器的使用

如果你是第一次使用Docker Hub,可以先註冊一個帳號,在最上方的搜尋框輸入ubuntu ,找到的第一個結果就是官方的ubuntu 鏡像,點開可以看到上圖的頁面。

這個頁面上有映像的一些基本資訊和用法介紹,右邊的 docker pull ubuntu 指令用來在本機上拉取映像。在上一篇已經說過,當我們實例化一個容器時,如果Docker 在本地找不到指定的映像,它會自動進行拉取,因此,我們可以直接在本地運行:

docker run -i -t ubuntu /bin/bash

這個指令比上次的範例多了一些參數,以下解釋:

  • -i 可以保證容器中開啟STDIN

  • -t會為容器指派一個偽TTY 終端機

  • ubuntu 是鏡像的名稱,相當於上個範例中的hello-world

  • ##/bin /bash 是啟動後要在容器中執行的指令

其中-i 和-t 兩個參數可以讓容器運作起來之後,我們可以與之互動。當容器建立完成,Docker 就會執行容器中的/bin/bash 指令,因此,容器執行後我們的終端會附著到容器上:

完全掌握Docker學習之容器的使用

此時,你可以在開啟一個終端,輸入docker ps 指令,查看已經啟動的容器,得到的結果如下:

CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS       PORTS     NAMES
402c5d3468d7   ubuntu    "/bin/bash"   4 hours ago   Up 4 hours             reverent_wu

這裡展示了容器的ID、映像、最後執行的指令、建立時間、狀態、名稱。這裡的名稱 reverent_wu 是 Docker 自動產生的,如果需要在建立容器時指定名稱,可以使用 --name 來為容器命名。

深入容器內部

目前的狀態下,我們可以在附著到容器的終端機執行任何 ubuntu 系統下支援的指令。例如,輸入 hostname 指令,發現容器的 hostname 就是它的容器 ID。

接著,可以看一下 /etc/hosts 檔案:

root@402c5d3468d7:/# cat /etc/hosts
127.0.0.1        localhost
::1        localhost ip6-localhost ip6-loopback
fe00::0        ip6-localnet
ff00::0        ip6-mcastprefix
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters
172.17.0.2        402c5d3468d7

你也可以自己嘗試在容器中查看進程,甚至使用 apt-get 安裝軟體包。

最後,可以輸入 exit 指令,推出容器,回傳宿主機的命令提示字元。請注意,此時再執行 docker ps 時發現,在容器的清單中,已經沒有剛剛建立的 ubuntu 容器了。

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

當我們退出的時候,容器就停止運作了。不過,容器並沒有被刪除,可以透過docker ps -a 指令,查看所有建立的容器,無論容器啟動與否:

CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS                     PORTS     NAMES
402c5d3468d7   ubuntu    "/bin/bash"   4 hours ago   Exited (0) 2 minutes ago             reverent_wu

這時,它的狀態變成了Exited (0) 2 minutes ago ,表示它在2 分鐘前推出,退出的狀態碼是0,表示正常退出。

我們可以透過一下的指令重新啟動這個容器:

docker start 402c5d3468d7

這個指令中,docker start 後面跟著的是容器的 ID,也可以使用容器的名稱。執行成功後,再透過docker ps 指令即可看到容器處於啟動狀態,透過docker start 指令讓容器重新啟動後,會沿用docker run 指令指定的參數,也就是啟動後會執行/bin/bash 啟動一個shell ,但是我們並沒有進入到容器的命令列當中。可以透過 docker attach 指令再次進入:

docker attach 402c5d3468d7

此時,就可以繼續在容器中執行指令。

如果一個容器不再使用了,可以使用 docker rm 指令將它刪除。

docker rm 402c5d3468d7

提供持續的服務

更多的時候,我們使用容器來運行應用程式和服務,並希望它在後台持續提供服務,這時候就需要以分離模式(或叫守護模式)來運作容器。只需要在 docker run 後面增加一個 -d 參數,就可以讓容器放到背景運行。

接下來,我們透過下面的指令再次運行一個容器:

docker run --name detached_mode -d ubuntu /bin/sh -c "while true; do echo Docker YYDS; sleep 1; done"

這一次,我們給這個容器明明叫detached_mode,透過-d 讓它以分離模式運行,並透過執行一段腳本,每隔1 秒列印一行Docker YYDS 。

因為它是以分離模式運作的,所以啟動後我們並不能在命令列看到列印的內容。但是可以透過 docker ps 指令看到容器在運作。

如果想讓他停止運行,可以使用 docker stop 指令。

docker stop detached_mode

同樣可以透過 docker start 指令再次啟動它,或者,可以透過 docker restart 重啟運行中的容器。

容器的運作狀態#

在 detached_mode 容器运行的时候,可以通过 docker logs 命令获取容器的日志。也可以增加 -f 来持续监控日志,类似于 tail -f 命令。

docker logs -f detached_mode

此时就可以看到一直有 Docker YYDS 被打印。

除了监控容器的日志,也可以使用 docker top 命令,查看容器内的进程。

docker top detached_mode

完全掌握Docker學習之容器的使用

使用 docker stats 命令,可以查看容器的CPU、内存、网络I/O、存储I/O的性能和指标。

完全掌握Docker學習之容器的使用

另外,docker exec 命令可以在容器内部运行进程。

docker exec detached_mode cat /etc/hosts

以上命令可以让我们直接查看容器中的 hosts 文件的内容,如果需要运行一个后台进程,在指令后面增加 -d 参数就可以了。

容器的详细信息

使用 docker inspect 命令可以查看容器的详细信息,其结果是一个 JSON 结构,包含的信息非常丰富。可以通过 -f 或者 --format 来选定想要查看的部分。

docker inspect --format '{{ .NetworkSettings.IPAddress }}' detached_mode

执行以上的命令,只会在命令行展示容器的 IP 地址。

推荐学习:《docker视频教程

以上是完全掌握Docker學習之容器的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:掘金。如有侵權,請聯絡admin@php.cn刪除
Docker的體系結構:了解容器和圖像Docker的體系結構:了解容器和圖像May 08, 2025 am 12:17 AM

Docker架構的核心概念是容器和鏡像:1.鏡像是容器的藍圖,包含應用及其依賴。 2.容器是鏡像的運行實例,基於鏡像創建。 3.鏡像由多個只讀層組成,容器運行時添加可寫層。 4.通過Linux命名空間和控制組實現資源隔離和管理。

Docker的力量:集裝箱化解釋了Docker的力量:集裝箱化解釋了May 07, 2025 am 12:07 AM

Docker通過容器化技術簡化了應用程序的構建、部署和運行。 1)Docker是一個開源平台,使用容器技術打包應用及其依賴,確保跨環境一致性。 2)鏡像和容器是Docker的核心,鏡像為應用的可執行包,容器為鏡像的運行實例。 3)Docker的基本用法如運行Nginx服務器,高級用法如使用DockerCompose管理多容器應用。 4)常見錯誤包括鏡像下載失敗和容器啟動失敗,調試技巧包括查看日誌和檢查端口。 5)性能優化和最佳實踐包括鏡像優化、資源管理和安全性提升。

Kubernetes和Docker:部署和管理集裝箱應用程序Kubernetes和Docker:部署和管理集裝箱應用程序May 06, 2025 am 12:13 AM

使用Kubernetes和Docker部署容器化應用的步驟包括:1.構建Docker鏡像,使用Dockerfile定義應用鏡像並推送到DockerHub。 2.在Kubernetes中創建Deployment和Service來管理和暴露應用。 3.使用HorizontalPodAutoscaler實現動態擴展。 4.通過kubectl命令調試常見問題。 5.優化性能,定義資源限制和請求,並使用Helm管理配置。

Docker:容器化技術簡介Docker:容器化技術簡介May 05, 2025 am 12:11 AM

Docker是一個開源平台,用於開發、打包和運行應用程序,通過容器化技術解決應用在不同環境中的一致性問題。 1.構建鏡像:通過Dockerfile定義應用環境和依賴,使用dockerbuild命令構建。 2.運行容器:使用dockerrun命令從鏡像啟動容器。 3.管理容器:通過dockerps、dockerstop、dockerrm等命令管理容器生命週期。

Docker和Linux:構建便攜式應用程序Docker和Linux:構建便攜式應用程序May 03, 2025 am 12:17 AM

如何利用Docker和Linux構建可移植的應用程序?首先,使用Dockerfile容器化應用,然後在Linux環境中管理和部署容器。 1)編寫Dockerfile,將應用及其依賴打包成鏡像。 2)使用dockerbuild和dockerrun命令在Linux上構建和運行容器。 3)通過DockerCompose管理多容器應用,定義服務依賴關係。 4)優化鏡像大小和資源配置,增強安全性,提升應用性能和可移植性。

Docker和Kubernetes:集裝箱編排的力量Docker和Kubernetes:集裝箱編排的力量May 02, 2025 am 12:06 AM

Docker和Kubernetes通過容器編排提升應用部署和管理效率。 1.Docker通過Dockerfile構建鏡像並運行容器,確保應用一致性。 2.Kubernetes通過Pod、Deployment和Service管理容器,實現自動化部署和擴展。

Docker vs. Kubernetes:主要差異和協同作用Docker vs. Kubernetes:主要差異和協同作用May 01, 2025 am 12:09 AM

Docker和Kubernetes是容器化和編排的領軍者。 Docker專注於容器生命週期管理,適合小型項目;Kubernetes則擅長容器編排,適用於大規模生產環境。兩者結合可提升開發和部署效率。

Docker and Linux:完美的合作夥伴關係Docker and Linux:完美的合作夥伴關係Apr 30, 2025 am 12:02 AM

Docker和Linux是完美的搭配,因為它們可以簡化應用的開發和部署流程。 1)Docker利用Linux的namespaces和cgroups實現容器隔離和資源管理。 2)Docker容器比虛擬機更高效,啟動速度快,鏡像分層結構便於構建和分發。 3)在Linux上,Docker的安裝和使用非常簡單,只需幾條命令即可。 4)通過DockerCompose,可以方便地管理和部署多容器應用。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境