Docker - 容器和宿主机
你好,有抱负的技术爱好者们!我很高兴与你们一起开始这段Docker之旅。作为一位有着多年经验的虚拟教师,我将引导你们进入容器和宿主机的精彩世界。如果你是编程新手,不用担心——我们将从基础开始,逐步深入学习。让我们开始吧!
Docker 镜像
想象一下你正在为旅行打包。你会创建一个包含所需物品的清单,对吧?Docker镜像正是这样的东西——它是容器运行所需的一切的蓝图。它就像是你应用的食谱,包括代码、运行时环境、库和系统工具。
创建你的第一个Docker镜像
让我们为一个“Hello, World!”应用程序创建一个简单的Docker镜像:
# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "hello.py"]
现在,让我们来分解一下:
-
FROM python:3.9-slim
:这就好比说,“我想从一个最小化的Python 3.9环境开始。” -
WORKDIR /app
:我们在设置工作空间,就像为我们的项目创建一个新文件夹。 -
COPY . /app
:我们在将我们的本地文件复制到容器中。 -
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