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