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 了。

相关推荐
山猪打不过家猪1 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
AllowM1 小时前
【LeetCode Hot100】除自身以外数组的乘积|左右乘积列表,Java实现!图解+代码,小白也能秒懂!
java·算法·leetcode
c无序1 小时前
Docker-技术架构演进之路
docker
不会Hello World的小苗2 小时前
Java——列表(List)
java·python·list
二十七剑3 小时前
jvm中各个参数的理解
java·jvm
东阳马生架构4 小时前
JUC并发—9.并发安全集合四
java·juc并发·并发安全的集合
计算机小白一个5 小时前
蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
java·数据结构·算法·蓝桥杯
菠菠萝宝5 小时前
【Java八股文】10-数据结构与算法面试篇
java·开发语言·面试·红黑树·跳表·排序·lru
不会Hello World的小苗5 小时前
Java——链表(LinkedList)
java·开发语言·链表
努力的小T5 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算