如何在 Ubuntu 上创建和运行 Docker 容器

KubernetesKubernetesBeginner
立即练习

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

简介

本全面教程将探讨容器技术的基础知识,重点介绍作为领先容器化平台的 Docker。该指南专为开发人员和系统管理员设计,提供了在不同计算环境中创建、管理和部署容器的实用见解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/CoreConceptsGroup(["Core Concepts"]) kubernetes(("Kubernetes")) -.-> kubernetes/ClusterInformationGroup(["Cluster Information"]) kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes/BasicsGroup -.-> kubernetes/dashboard("Dashboard") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/CoreConceptsGroup -.-> kubernetes/architecture("Architecture") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("Cluster Info") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/version("Version") subgraph Lab Skills kubernetes/dashboard -.-> lab-392932{{"如何在 Ubuntu 上创建和运行 Docker 容器"}} kubernetes/get -.-> lab-392932{{"如何在 Ubuntu 上创建和运行 Docker 容器"}} kubernetes/architecture -.-> lab-392932{{"如何在 Ubuntu 上创建和运行 Docker 容器"}} kubernetes/cluster_info -.-> lab-392932{{"如何在 Ubuntu 上创建和运行 Docker 容器"}} kubernetes/version -.-> lab-392932{{"如何在 Ubuntu 上创建和运行 Docker 容器"}} end

容器基础

什么是容器化?

容器化是一种轻量级虚拟化技术,它将应用程序及其依赖项打包成称为容器的隔离、可移植单元。与传统虚拟机不同,容器共享主机系统的内核,这使得它们的部署效率更高、速度更快。

容器技术的关键概念

概念 描述
容器 轻量级、独立的可执行包
镜像 用于创建容器的只读模板
运行时 负责运行容器的软件

Docker:领先的容器平台

Docker 是最流行的容器化技术,使开发人员能够在不同环境中一致地创建、部署和运行应用程序。

graph TD A[应用程序代码] --> B[Dockerfile] B --> C[Docker 镜像] C --> D[容器运行时] D --> E[正在运行的容器]

在 Ubuntu 22.04 上的实际 Docker 示例

首先,在 Ubuntu 上安装 Docker:

## 更新软件包索引
sudo apt-get update

## 安装依赖项
sudo apt-get install ca-certificates curl gnupg

## 添加 Docker 的官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

## 设置存储库
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]  \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## 安装 Docker 软件包
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

创建并运行一个简单容器

## 拉取 Ubuntu 镜像
docker pull ubuntu:latest

## 运行一个交互式容器
docker run -it ubuntu:latest /bin/bash

## 在容器内部,你可以运行命令
root@container:/## cat /etc/os-release
root@container:/## exit

微服务与容器化

容器化通过提供以下功能实现微服务架构:

  • 服务之间的隔离
  • 易于扩展
  • 跨环境的一致部署
  • 高效的资源利用

Kubernetes 基础

理解 Kubernetes 架构

Kubernetes 是一个开源的容器编排平台,旨在自动化容器化应用程序的部署、扩展和管理。

graph TD A[Kubernetes 集群] --> B[控制平面] A --> C[工作节点] B --> D[API 服务器] B --> E[调度器] B --> F[控制器管理器] C --> G[Kubelet] C --> H[容器运行时]

Kubernetes 核心组件

组件 功能
Pod 最小的可部署单元
节点 物理或虚拟机
集群 节点的集合
部署 管理应用程序副本集
服务 Pod 的网络抽象

在 Ubuntu 22.04 上安装 Kubernetes

## 更新软件包索引
sudo apt-get update

## 安装所需软件包
sudo apt-get install -y apt-transport-https curl

## 添加 Kubernetes GPG 密钥
curl -s | sudo apt-key add -

## 添加 Kubernetes 存储库
sudo bash -c 'echo "deb  kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list'

## 安装 Kubernetes 组件
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

Kubernetes 基本部署示例

## 初始化 Kubernetes 集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

## 为当前用户配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

## 部署一个简单的 nginx 部署
kubectl create deployment nginx-demo --image=nginx

## 将部署暴露为服务
kubectl expose deployment nginx-demo --port=80 --type=NodePort

容器扩展与管理

Kubernetes 提供了强大的机制用于:

  • 自动容器扩展
  • 失败容器的自我修复
  • 滚动更新和回滚
  • 容器间的负载均衡
  • 资源分配与管理

OpenShift 洞察

什么是 OpenShift?

OpenShift 是由红帽公司开发的企业级 Kubernetes 平台,为复杂的企业环境提供高级容器管理和部署功能。

graph TD A[OpenShift 平台] --> B[Kubernetes 核心] A --> C[企业特性] B --> D[容器编排] C --> E[安全性] C --> F[监控] C --> G[开发者工具]

OpenShift 关键组件

组件 描述
OCP OpenShift 容器平台
路由 外部服务暴露
构建配置 源到镜像的构建
部署配置 高级部署策略

在 Ubuntu 22.04 上安装 OpenShift 客户端工具

## 下载 OpenShift CLI
wget

## 解压 CLI 工具
tar xzf openshift-client-linux.tar.gz

## 将二进制文件移动到系统路径
sudo mv oc kubectl /usr/local/bin/

## 验证安装
oc version
kubectl version

连接到 OpenShift 集群

## 登录到 OpenShift 集群
oc login -u username -p password

## 列出可用项目
oc projects

## 创建一个新项目
oc new-project myapp

## 部署一个应用程序
oc new-app nodejs:14~

企业容器管理

OpenShift 通过提供以下功能扩展了 Kubernetes:

  • 增强的安全策略
  • 集成的容器注册表
  • 高级网络功能
  • 全面的监控和日志记录
  • 无缝的混合云集成

总结

通过掌握容器基础知识,开发人员可以利用 Docker 强大的生态系统更高效地构建、打包和分发应用程序。本教程展示了容器化如何简化软件部署、增强可移植性,并在各种基础设施平台上提供一致的运行时环境。