Docker+Kubernetes_第一章_Docker入门

1、Docker介绍

Docker是一个开源的虚拟化容器引擎,让开发者可以打包他们的应用及依赖到一个可移植的容器中,然后发布到Linux环境中以实现虚拟化的管理。这些 Linux环境包括CentOS、Redhat、Ubuntu等。在Windows上也可以部署Docker。

Docker 中的虚拟化容器完全使用"沙箱"机制,相互之间不会有任何接口。可以把这些容器理解为是逻辑隔离的。

一个完整的 Docker 由以下几部分组成:

  • Docker客户端。
  • Docker守护进程(Daemon)。
  • Docker 镜像(lmage)。
  • Docker容器(Container)。
  • 镜像仓库(Repository)。

Docker 实现了应用代码与底层运行环境之间的耦合。它可以将一个复杂系统中的各个模块进行容器化,同时提供了负载均衡和失败迁移功能。应用的容器化,满足了敏捷开发、动态迁移、标准化的要求,从而大大提高了效率。

2、Docker的体系架构与基本概念

Docker是一个客户端服务器(Client-Server)架构。Docker 客户端和Docker守护进程交流,而Docker守护进程是运作Docker 的核心,起着非常重要的作用(如构建、运行和分发Docker容器等)。

我们在使用Docker 创建容器时需要有镜像。镜像是一个只读的模板。而存放镜像的地方叫作"镜像仓库"。镜像仓库,可以是公有镜像仓库(例如官方提供的公有镜像仓库Docker Hub),也可以是私有镜像仓库(例如 Harbor)。

图 1-2 展示了Docker的体系架构

表1-1列出了Docker体系架构中的组成部分及其功能特性。

|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 组成部分 | 功能特性 |
| Docker客户端 | 通常指Docker 提供的命令行工具,是Docker 最基本的用户接口。用户通过Docker 客户端提交Docker指令,Docker守护进程接收并执行该指令。Docker也有图形化的客户端工具 |
| Docker守护进程 | 在Docker宿主机上运行Docker,实际上运行的是 Docker守护进程。用户并不直接和Docker守护进程交互,而是通过 Docker客户端的命令来和它进行交互 |
| Docker镜像 | 一个Docker镜像是一个只读的模板。例如,一个Docker镜像可以包含一个CentOS的操作系统、一个MySQL的数据库和一个Tomcat的应用服务器。Docker镜像被用来创建Docker容器,Docker提供了一个简单的方式来构建一个新的镜像或更新一个已经存在的镜像。用户也可以从镜像仓库下载其他人已经创建好的Docker 镜像 |
| Docker容器 | 通过Docker镜像可以创建Docker容器。Docker的容器可以保存任何东西,而这些东西是运行一个应用所必需的。可以把.Docker 容器看成是一个虚拟机。Docker容器可以被运行、开启、停止、移动和删除。每一个容器都是一个分离的、安全的应用平台。Docker容器是Docker的运行组件 |
| 镜像仓库 | Docker的镜像仓库用于保存Docker镜像,它可以是公共的存储地方,也可以是私有的存储地方。 1、公共的镜像仓库由Docker Hub提供,它提供了一个用户可以使用的已有镜像的集合。这些集合中的镜像可以是你自己创建的,也可以是别人创建的。 2、私有的镜像仓库需要自己在私有环境中搭建,例如在企业内网中自行搭建。Harbor是一个典型的私有的镜像仓库 |

3、安装Docker

Docker 实现虚拟化的本质是:在已经运行的Linux中创建了一个逻辑隔离的运行环境。因此,其执行效率几乎等同于宿主机的 Linux主机。

Docker必须部署在Linux系统上。如果想在其他系统(如Windows)上部署Docker,则需要先安装一个虚拟 Linux环境。表1-2列举了本书所使用的实验环境。

表1-2

|--------------------------------|--------------------------------------|
| 所需软件 | 软件说明 |
| ubuntu-24.10-desktop-amd64.iso | Ubuntu Linux 64位安装文件,将作为运行Docker的宿主机 |
| VMware Workstation Pro | 虚拟机管理器,用于部署CentOS环境 |
| Xshell 8 | 远程SSH登录工具,用于使用命令行方式登录 CentOS |

步骤一:更新系统软件包列表

在安装 Docker 之前,需要确保系统的软件包列表是最新的。打开终端,执行以下命令:

复制代码
sudo apt update

此命令会从软件源中获取最新的软件包信息。

步骤二:安装必要的依赖包

安装一些必要的依赖包,以允许apt通过 HTTPS 使用存储库:

复制代码
sudo apt install apt-transport-https ca-certificates curl software-properties-common

步骤三:添加 Docker 官方 GPG 秘钥

使用curl命令下载并添加 Docker 官方的 GPG 密钥,以确保下载的软件包的完整性:

复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

步骤四:添加Docker软件源

将 Docker 官方的软件源添加到系统的软件源列表中:

复制代码
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤五:再次更新软件包列表

添加软件源后,再次更新软件包列表,以便系统知道可以从新的软件源中获取 Docker 软件包:

复制代码
sudo apt update

步骤六:安装Docker引擎

执行以下命令来安装 Docker 引擎、Docker CLI 和 Containerd:

复制代码
sudo apt install docker-ce docker-ce-cli containerd.io

在安装过程中,系统会提示你确认安装,输入Y并回车即可。

步骤七:验证Docker安装

安装完成后,可以通过运行一个简单的 Docker 镜像来验证 Docker 是否安装成功:

复制代码
root@node1:~# docker info 
Client: Docker Engine - Community
 Version:    28.0.0
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.21.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.33.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
...省略...

步骤八:(可选)将用户添加到docker组

默认情况下,运行 Docker 命令需要使用sudo。为了避免每次都输入sudo,可以将当前用户添加到docker组中:

复制代码
sudo usermod -aG docker $USER

添加用户到组后,需要注销并重新登录,新的组权限才会生效。你也可以使用以下命令使更改立即生效:

复制代码
newgrp docker

通过以上步骤,你就可以在 Ubuntu 系统上成功安装并使用 Docker 了。

相关推荐
小信丶12 分钟前
Spring Cloud Stream EnableBinding注解详解:定义、应用场景与示例代码
java·spring boot·后端·spring
无限进步_16 分钟前
【C++】验证回文字符串:高效算法详解与优化
java·开发语言·c++·git·算法·github·visual studio
亚历克斯神16 分钟前
Spring Cloud 2026 架构演进
java·spring·微服务
七夜zippoe20 分钟前
Spring Cloud与Dubbo架构哲学对决
java·spring cloud·架构·dubbo·配置中心
海派程序猿20 分钟前
Spring Cloud Config拉取配置过慢导致服务启动延迟的优化技巧
java
阿维的博客日记31 分钟前
为什么不逃逸代表不需要锁,JIT会直接删掉锁
java
William Dawson32 分钟前
CAS的底层实现
java
andeyeluguo38 分钟前
docker总结
运维·docker·容器
SuAluvfy43 分钟前
从 0 到 1:在 Windows + Docker 环境下搭建 NextChat 并接入多模型 API(踩坑实录)
docker·容器
九英里路43 分钟前
cpp容器——string模拟实现
java·前端·数据结构·c++·算法·容器·字符串