【1.0】Docker介绍

【一】Docker是什么

  • Docker是一个开源项目,旨在实现轻量级的操作系统虚拟化解决方案。

  • 它最初是由dotCloud公司内部的一个业余项目开始的,并且后来成为了Docker Inc.公司的主要产品。

  • 该项目在2013年开源,并加入了Linux基金会,按照Apache 2.0协议进行维护。

  • Docker基于Go语言实现,构建在Linux容器(LXC)等技术的基础之上。

  • 它提供了一种简单高效的方式来创建、打包和分发应用程序和服务,使得应用程序能够以容器的形式运行,而不需要关心底层操作系统的细节。

  • 相比传统的虚拟机技术,Docker具有更轻量级、更快速、更易用的特点。

  • Docker 项目的目标是实现【轻量级的操作系统虚拟化解决方案】。

  • Docker 的基础是 Linux 容器(LXC)等技术。

  • 在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。

  • 用户操作 Docker 的【容器就像操作一个快速轻量级的虚拟机】一样简单。

【二】容器和虚拟化比较

Docker的优势在于:

  • 轻量级:相比传统的虚拟机技术,Docker的容器更加轻量级,启动速度更快,资源占用更少。
  • 灵活性:Docker的容器可以在任何支持Docker的环境中运行,无论是开发机、测试机还是生产服务器,保证了应用程序在不同环境中的一致性。
  • 可移植性:Docker的容器可以在不同主机之间快速迁移和部署,提高了应用程序的可移植性。
  • 高效性:Docker通过共享宿主机的操作系统内核,避免了虚拟机的性能开销,提高了应用程序的运行效率。
  • 生态系统:Docker拥有庞大的生态系统,用户可以在Docker Hub上获取各种类型的镜像,并可以搭建私有的仓库来管理自己构建的镜像。
  • docker 不需要虚拟化出操作系统这一层,它使用的就是宿主机的操作系统资源

【三】Docker概念

  • Docker的核心概念包括镜像(Image)、容器(Container)、仓库(Repository)和服务(Service)

【1】cs架构

  • Docker是一个客户端-服务器(C/S)架构程序。
  • Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。
  • Docker提供了一个命令行工具Docker以及一整套RESTful API。
  • 你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
mysql://地址+端口
redis://地址+端口
http://地址+端口
  • dockerc和s要通信 没有自定义协议,使用的http协议,符合resful规范

【2】核心概念

(1)镜像(Image):

  • 镜像是Docker的打包格式,包含了运行应用程序所需的所有文件、依赖和配置信息。
  • Docker通过使用Dockerfile来定义镜像的构建规则。Dockerfile是一个文本文件,其中包含了一系列指令来描述如何构建镜像。
  • 用户可以使用Docker命令根据Dockerfile构建镜像,例如:
    # Dockerfile内容
    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y nginx
    COPY myapp /var/www/html
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
    
    # 构建镜像
    $ docker build -t myapp-image .
    

(2)容器(Container):

  • 容器是镜像的一个运行实例,可以被启动、停止、删除和暂停。
  • 每个容器都是相互隔离的,使用宿主机的操作系统内核。
  • Docker允许用户在容器中运行应用程序,并为每个应用程序提供独立的运行环境。
  • 用户可以使用Docker命令来管理容器的生命周期,例如:
    # 运行容器
    $ docker run -d --name myapp-container myapp-image
    
    # 停止容器
    $ docker stop myapp-container
    
    # 删除容器
    $ docker rm myapp-container
    

(3)仓库(Repository):

  • 仓库用于存储和分享镜像。
  • Docker Hub是一个公共的仓库,用户可以从中获取各种类型的镜像,并将自己构建的镜像发布到该仓库中。
  • 用户也可以搭建私有的仓库来存储自己的镜像。
  • 用户可以使用Docker命令来拉取、推送和搜索镜像,例如:
    # 拉取镜像
    $ docker pull ubuntu:latest
    
    # 推送镜像到Docker Hub
    $ docker tag myapp-image username/myapp-image
    $ docker push username/myapp-image
    
    # 从Docker Hub搜索镜像
    $ docker search nginx
    

(4)服务(Service):

  • 服务是Docker Swarm集群中的一个特性,它允许用户将多个容器组织成一个无缝协作的分布式应用。
  • 通过服务,用户可以定义想要运行的容器数量、容器之间的网络关系和负载均衡等配置。
  • 服务的创建需要先初始化Docker Swarm集群并加入节点,然后使用Docker命令创建和管理服务,例如:
    # 初始化Docker Swarm集群
    $ docker swarm init
    
    # 加入节点到Docker Swarm集群
    $ docker swarm join --token <token> <manager-ip>
    
    # 创建服务
    $ docker service create \
      --name myapp-service \
      --replicas 3 \
      --publish published=8080,target=80 \
      myapp-image
    
    # 管理服务
    $ docker service ls
    $ docker service scale myapp-service=5
    $ docker service update --image new-image myapp-service
    

【3】图解

posted @ 2023-08-29 15:50  Chimengmeng  阅读(17)  评论(0编辑  收藏  举报
/* */