Docker - 容器和主機

大家好,對技術充滿熱情的同好們!我很興奮能與你們一起踏上Docker的旅程。作為一位具有多年經驗的虛擬老師,我將引導你們進入容器和主機的精彩世界。別擔心你們對編程是新手——我們會從基礎開始,逐步提升。我們來開始吧!

Docker - Container & Hosts

Docker 鏡像

想像你正在為旅行打包。你會列出一個所需物品的清單,對吧?Docker鏡像正是這樣的東西——它是容器運行所需一切的藍圖。這就像是你應用程序的菜譜,包括代碼、運行時環境、庫和系統工具。

創建你的第一個 Docker 鏡像

我們來為一個 "Hello, World!" 應用程序創建一個簡單的 Docker 鏡像:

# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "hello.py"]

現在,讓我們分解一下:

  1. FROM python:3.9-slim:這就像說,“我想從一個最小化的 Python 3.9 環境開始。”
  2. WORKDIR /app:我們正在設置我們的工作空間,就像為我們的項目創建一個新文件夹。
  3. COPY . /app:我們正在將我們的本地文件複製到容器中。
  4. CMD ["python", "hello.py"]:這是我們啟動容器時將運行的命令。

要建立這個镜像,我們會運行:

docker build -t my-hello-world .

執行容器

現在有了我們的镜像,讓我們讓它活起來!運行一個容器就像啟動一個預先加載了你應用程序的虛擬計算機。

基本容器運行

docker run my-hello-world

這個命令將根據我們的 my-hello-world 镜像啟動一個容器,並運行 hello.py 腚本。

交互模式

有時候,你想要與你的容器交互。這就像在容器內直接打開終端:

docker run -it my-hello-world /bin/bash

-it 标志使容器交互式,而 /bin/bash 開始一個 bash shell。

列出所有容器

當你使用 Docker 時,你會創建多個容器。跟踪它們是很重要的。這就像檢查你的計算机上目前運行哪些應用程序。

docker ps

這個命令顯示所有運行的容器。要看所有容器,包括停止的容器:

docker ps -a

這裡有一個 docker ps 選項的便捷表格:

選項 描述
-a, --all 顯示所有容器(默認只顯示運行的)
-q, --quiet 只顯示容器 ID
-s, --size 顯示總文件大小
--format 使用 Go 模板優雅地打印容器

停止容器

就像在計算機上關閉應用程序一樣,當你完成使用時,你可以停止 Docker 容器。

温和停止

docker stop <container_id>

這會發送一個 SIGTERM 訊號,讓容器溫和關閉。

強制停止

docker kill <container_id>

這就像強制退出應用程序。當 docker stop 不起作用時使用它。

移除容器

停止容器後,你可能想要完全移除它:

docker rm <container_id>

小貼士:你可以將停止和移除結合在一個命令中:

docker rm -f <container_id>

總結

恭喜你們!你們已經踏出了進入 Docker 容器和主機世界的第一步。記住,使用 Docker 就像管理一群微小、專業的計算機。每個容器都是一個自給自足的環境,準備在任何系統上的一致性運行你的應用程序。

在我們結束之前,這裡有一個有趣的比喻:Docker 容器就像食物車。每輛車(容器)都有制作和提供其特色菜(運行你的應用程序)所需的一切。你可以輕鬆地將這些車輛移動、啟動它們,或者在需要時將它們收起來。

在我們的下一課中,我們將深入探討 Docker 的網絡和數據持久性。到那時為止,快樂地容器化吧!

Credits: Image by storyset