Docker学习笔记

目录

一、什么是Docker

 二、Docker和虚拟机技术的不同

三、Docker的安装 

四、Docker仓库镜像加速 

五、Docker运行流程以及原理


一、什么是Docker

Docker是一种开源的容器化平台,用于将应用程序及其依赖项打包成一个可移植的容器。Docker的主要目标是简化应用程序的部署和管理,并提供更高的灵活性、可移植性和可重复性。

Docker的一些关键概念和特点:

  1. 容器: Docker容器是一个独立运行的执行单元,包含应用程序和其依赖项。容器是轻量级的,由Docker引擎负责管理其生命周期。容器是镜像的运行实例,容器包括了运行应用程序所需的所有内容,以及一个独立的文件系统。容器是动态的,可以启动、停止、删除,并且可以在不同的环境中移植。

  2. 镜像: 镜像是用于创建Docker容器的模板。它包含了一个应用程序运行所需的所有文件、代码、库和依赖项。镜像是不可变的,一旦创建就不能被修改。容器是通过镜像来启动和运行的。镜像是不可变的,一旦创建就不能被修改。任何对镜像的修改都会生成一个新的镜像。镜像是静态的,通常被认为是应用程序的“打包”形式,类似于虚拟机中的镜像。

  3. Docker引擎: Docker引擎是Docker的核心组件,负责管理容器的创建、运行和停止。它还提供了一组命令行工具和API,用于与Docker进行交互。

  4. 容器编排(Docker Compose、K8s): Docker Compose是一个工具,允许定义和运行多个Docker容器的配置。通过一个简单的YAML文件,可以定义应用程序的各个组件、服务和它们之间的关系。

  5. 仓库(Docker Hub): Docker Hub是一个用于存储和共享Docker镜像的公共仓库。开发者可以在Docker Hub上找到各种各样的官方和社区创建的镜像,也可以将自己的镜像上传到这个平台。

使用Docker的好处包括:

  • 环境一致性: 通过容器化,开发和生产环境可以保持一致,减少了“在我的机器上可以运行”的问题。

  • 轻量级: 容器相对于虚拟机更轻量,启动速度更快,占用更少的资源。

  • 可移植性: Docker容器可以在任何支持Docker的环境中运行,无论是开发者的笔记本、测试服务器还是生产环境。

  • 易于部署和扩展: Docker简化了应用程序的部署过程,并支持横向扩展,使应用程序可以更容易地适应不同的负载。

 二、Docker和虚拟机技术的不同

  1. 虚拟化层次:

    • Docker: 使用容器虚拟化技术,容器直接运行在宿主操作系统的内核上。容器共享主机操作系统的内核,并在其上添加一个额外的用户空间。这使得容器更为轻量,启动更快。
    • 虚拟机: 使用全虚拟化或半虚拟化技术,虚拟机在宿主操作系统上运行一个完整的操作系统(称为Guest OS),通过Hypervisor进行管理。全虚拟化会模拟硬件,而半虚拟化需要对Guest OS进行修改以提高性能。
  2. 资源占用和性能:

    • Docker: 容器共享主机的内核,减少了资源开销,因此更为轻量,启动更快。容器的性能较接近于宿主系统。
    • 虚拟机: 虚拟机需要独立的Guest OS,因此占用更多的资源,启动时间较慢。虚拟机性能相对于容器有更多的开销。
  3. 隔离性:

    • Docker: 容器在同一主机上共享操作系统内核,但使用Linux命名空间和控制组(cgroups)等技术提供一定程度的隔离性。容器之间能够共享一些系统资源。
    • 虚拟机: 虚拟机在Hypervisor上运行,具有更强的隔离性,因为它们运行在独立的Guest OS中,相互之间不共享内核。
  4. 镜像和部署:

    • Docker: 镜像是轻量、可重复且易于分享的。Docker容器的部署更加简单,可以在几秒钟内完成。
    • 虚拟机: 虚拟机镜像较为庞大,部署相对较慢,通常需要几分钟。

 简而言之,传统虚拟机,需要虚拟各种硬件,来运行一个完整的操作系统,然后在这个虚拟出来的系统上安装和运行软件。而容器内的应用直接运行在宿主机上,容器并没有自己的内核,也没有虚拟的硬件,所以更轻便。

三、Docker的安装 

Docker官方文档:在 Linux 上安装 Docker Desktop |Docker 文档icon-default.png?t=N7T8https://docs.docker.com/desktop/install/linux-install/

我使用的环境是Ubuntu20.04.6 LTS

  1. 更新包列表:sudo apt update

  2. 安装Docker依赖:                                                                                                                 安装Docker所需的一些软件包,包括使用HTTPS传输的软件包以及CA证书:               

     sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  3. 添加Docker的官方GPG密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. 设置稳定版本的Docker存储库:

    下载并添加Docker官方的GPG密钥,以验证软件包的完整性:                                         

    echo "deb [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
  5. 安装Docker Engine:                                                                                                            更新软件包列表,并安装Docker Engine:                                                                               

    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io
    
  6. 启动Docker服务:                                                                                                                 安装完成后,启动Docker服务:                                                                                              

    sudo systemctl start docker

    将Docker设置为开机自启动:                                                                                                  

    sudo systemctl enable docker
  7. 验证安装是否成功:

    sudo docker --version

    这将显示已安装的Docker版本信息。

  8. Docker!启动!                                                                                                                        

    sudo docker run hello-world

请注意,上述步骤中的一些命令可能需要使用sudo进行管理员权限。在安装docker时许多系统通常会自动创建一个名为docker的用户组,这个组用于管理Docker的访问权限,以便允许特定用户执行Docker命令而无需使用sudo。将当前用户添加到docker组:sudo usermod -aG docker $USER

四、Docker仓库镜像加速 

因为某些原因,从Docker仓库拉取镜像时会非常慢,需要在云服务器上进行配置。

我使用的是华为云服务器,华为云的官方文档:设置镜像加速器_容器镜像服务 SWR_用户指南_镜像管理_华为云 (huaweicloud.com)icon-default.png?t=N7T8https://support.huaweicloud.com/usermanual-swr/swr_01_0045.html

  1. 以root用户登录容器引擎所在的虚拟机。
  2. 修改“/etc/docker/daemon.json”文件(如果没有,可以手动创建),在该文件内添加如下内容:

    vi /etc/docker/daemon.json

    {
        "registry-mirrors": ["加速器地址"]
    }
    
  3. 配置完成后,执行systemctl restart docker重启容器引擎。
  4. 执行docker info,当Registry Mirrors字段的地址为加速器的地址时,说明加速器已经配置成功。

五、Docker运行流程以及原理

run的运行流程图

Docker是如何工作的:

首先要了解的是:

Docker 是一种容器化平台,它使用客户端-服务器(Client-Server,CS)架构。Docker 采用了分布式的设计,其中客户端和服务器可以运行在同一台主机上,也可以分布在不同的主机上用户通过 Docker 客户端与 Docker 服务器进行通信,从而管理容器的创建、运行和部署。

在 Docker 中:

  • Docker Daemon(守护进程): 这是运行在服务器上的后台进程,负责管理容器的创建、运行和停止等操作。Docker Daemon是 Docker 引擎的服务器组件。

  • Docker 客户端: 这是用户与 Docker 引擎交互的接口,可以是命令行工具或图形用户界面。Docker 客户端是客户端部分,用于向服务器发送指令。

  1. 连接到 Docker 引擎: 用户通过使用 Docker 客户端的命令行工具连接到 Docker 引擎。

    docker version

    上述命令通常用于检查 Docker 客户端与 Docker 引擎的连接是否正常。

  2. 获取 Docker 镜像: 用户可以从 Docker Hub 或其他 Docker 镜像仓库中获取容器镜像。

  3. 运行 Docker 容器: 通过 docker run 命令,用户可以启动一个容器实例。

  • 49
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值