如何创建并运行一个“Hello World”Docker 容器

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Docker 是一个强大的容器化平台,它彻底改变了开发者构建、部署和管理应用程序的方式。在本教程中,我们将指导你完成创建并运行一个简单的“Hello World”Docker 容器的过程,这是学习 Docker 的一个很好的起点。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/run -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/ls -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/ps -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/start -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/stop -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/create -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/pull -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/images -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} docker/version -.-> lab-411528{{"如何创建并运行一个“Hello World”Docker 容器"}} end

Docker 简介

Docker 是一个广受欢迎的开源平台,它使开发者能够在容器化环境中构建、部署和运行应用程序。容器是轻量级、独立且可执行的软件包,其中包含运行应用程序所需的一切,例如代码、运行时环境、系统工具和库。

什么是 Docker?

Docker 是一个旨在通过使用容器来更轻松地创建、部署和运行应用程序的工具。容器允许开发者将应用程序与其所需的所有部件(如库和其他依赖项)打包在一起,并将其作为一个包全部交付。

Docker 架构

Docker 架构由以下关键组件组成:

graph TD A[Docker 客户端] --> B[Docker 守护进程] B --> C[Docker 镜像] B --> D[Docker 容器] B --> E[Docker 注册表]
  • Docker 客户端:用于与 Docker 系统进行交互的用户界面。
  • Docker 守护进程:管理 Docker 对象(如图像、容器、网络和卷)的后台进程。
  • Docker 镜像:用于创建 Docker 容器的蓝图。
  • Docker 容器:Docker 镜像的可运行实例。
  • Docker 注册表:用于存储和分发 Docker 镜像的仓库。

使用 Docker 的好处

  • 一致性:无论底层基础设施如何,Docker 都能确保应用程序以相同的方式运行。
  • 可扩展性:可以根据应用程序的资源需求轻松扩展或缩减 Docker 容器。
  • 可移植性:无论底层操作系统如何,Docker 容器都可以在任何安装了 Docker 的机器上运行。
  • 高效性:与传统虚拟机相比,Docker 容器轻量级且使用的资源更少。

开始使用 Docker

要开始使用 Docker,你需要在系统上安装 Docker 引擎。你可以从 Docker 官方网站(https://www.docker.com/get-started)下载并安装 Docker。安装完成后,你就可以开始使用 Docker 来构建和运行你的应用程序了。

构建一个“Hello World”Docker 容器

在本节中,我们将学习如何构建一个简单的“Hello World”Docker 容器。

创建一个 Dockerfile

Dockerfile 是一个文本文件,其中包含构建 Docker 镜像的指令。让我们创建一个简单的 Dockerfile:

## 使用官方 Ubuntu 22.04 镜像作为基础镜像
FROM ubuntu:22.04

## 将工作目录设置为 /app
WORKDIR /app

## 将 “hello.sh” 脚本复制到容器中
COPY hello.sh.

## 使脚本可执行
RUN chmod +x hello.sh

## 定义容器启动时运行脚本的命令
CMD ["./hello.sh"]

在这个 Dockerfile 中,我们:

  1. 使用官方 Ubuntu 22.04 镜像作为基础镜像。
  2. 将工作目录设置为 /app
  3. 将 “hello.sh” 脚本复制到容器中。
  4. 使脚本可执行。
  5. 定义容器启动时运行脚本的命令。

构建 Docker 镜像

要构建 Docker 镜像,请在与 Dockerfile 相同的目录中运行以下命令:

docker build -t hello-world.

此命令将构建标签为 “hello-world” 的 Docker 镜像。

验证镜像

你可以通过运行以下命令列出系统上的所有 Docker 镜像:

docker images

你应该会在列表中看到 “hello-world” 镜像。

运行并探索“Hello World”容器

既然我们已经构建了“hello-world”Docker 镜像,那就来运行并探索这个容器吧。

运行容器

要运行“hello-world”容器,请使用以下命令:

docker run hello-world

此命令将启动容器并执行 Dockerfile 中定义的命令(即运行“hello.sh”脚本)。

你应该会看到输出:

Hello, LabEx!

探索容器

你可以使用各种 Docker 命令来探索正在运行的容器:

  1. 列出正在运行的容器

    docker ps

    这将显示系统上正在运行的容器。

  2. 检查容器

    docker inspect hello-world

    这将提供有关容器的详细信息,例如其配置、网络设置等。

  3. 查看容器的日志

    docker logs hello-world

    这将显示在容器中执行的“hello.sh”脚本的输出。

  4. 在正在运行的容器中执行命令

    docker exec -it hello-world /bin/bash

    这将在正在运行的容器内启动一个新的交互式会话,使你能够探索容器的文件系统并运行其他命令。

停止并删除容器

要停止正在运行的容器,请使用以下命令:

docker stop hello-world

要删除容器,请使用以下命令:

docker rm hello-world

这将停止并从系统中删除“hello-world”容器。

总结

在本教程中,你已经学习了如何创建并运行一个“Hello World”Docker 容器。通过理解 Docker 容器的基本概念,你已经朝着掌握这项强大技术迈出了第一步。Docker 允许你将应用程序及其依赖项打包成可移植的、独立的单元,从而更轻松地在不同环境中开发、部署和管理你的软件。凭借从本教程中学到的知识,你现在可以探索更高级的 Docker 概念,并开始构建自己的容器化应用程序。