Docker介绍

介绍

Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖打包成一个可移植的容器,然后发布到任何支持Docker的机器上

  • 开发人员能利用docker 开发和运行应用程序
  • 运维人员能利用docker 部署和管理应用程序

Docker的主要特点包括:

  1. 环境一致性:Docker可以确保开发、测试和生产环境的一致性,解决了传统开发过程中的环境差异问题。
  2. 资源高效利用:由于Docker容器直接运行在宿主机的内核上,不需要像虚拟机那样运行完整的操作系统,因此它能更高效地利用系统资源。
  3. 快速启动时间:与虚拟机相比,Docker容器可以在短时间内启动,这对于开发、测试和部署过程来说是一个巨大的优势。
  4. 持续集成和部署:Docker与持续集成(CI)和持续部署(CD)系统结合,可以实现自动化的构建、测试和部署流程。
  5. 轻松迁移:Docker容器可以在不同平台之间轻松迁移,无需担心环境变化导致的问题。
  6. 易于维护和扩展:Docker使用分层存储和镜像技术,使得应用的维护和更新变得简单,同时也便于基于现有镜像进行扩展。

Docker提供了在一个完全隔离的环境中打包和运行应用程序的能力,这个隔离的环境被称为容器。 由于容器的隔离性和安全性,因此可以在一个主机(宿主机)上同时运行多个相互隔离的容器,互不干预。

Docker已经提供工具和组件, 来管理容器的生命周期:

  • 使用容器来开发应用程序及其支持组件。
  • 容器成为分发和测试你的应用程序的单元。
  • 将应用程序部署到生产环境中,作为容器或协调服务。

Docker能够将应用程序与基础架构分开,以便快速交付软件。

Docker整体结构

Docker Engine是一个包含以下组件的客户端-服务端(C/S)应用程序

  • 服务端 --- 一个长时间运行的守护进程(Docker Daemon)
  • REST API --- 一套用于与Docker Daemon通信并指示其执行操作的接口
  • 客户端 --- 命令行接口CLI( Command Line Interface)

Docker客户端(Docker Client)

  • Docker客户端(Docker Client)是用户与Docker进行交互的最主要方式。当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端。Docker Client除了连接本地服务端,通过更改或指定DOCKER_HOST连接远程服务端。

Docker服务端(Docker Server)

  • Docker Daemon其实就是Docker 的服务端。它负责监听Docker API请求(如Docker Client)并管理Docker对象,如镜像、容器、数据卷等 。

Docker Registries

  • 俗称Docker仓库,专门用于存储镜像的云服务环境
  • Docker Hub就是一个公有的存放镜像的地方,类似Github存储代码文件。

Docker 对象

  • 镜像:一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
  • 容器:镜像被运行起来后的实例。
  • 网络:外部或者容器间如何互相访问的网络方式,如host模式、bridge模式。
  • 数据卷:容器与宿主机之间、容器与容器之间共享存储方式,类似虚拟机与主机之间的共享文件目录。

Docker 底层技术

Docker使用Go语言实现,利用linux内核的几个特性来实现功能,也就意味着Docker只能在linux上运行。Docker Engine将namespace、cgroups、UnionFS进行组合后的一个package,就是一个容器格式(Container Format)。Docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和生命周期管理。

Docker版本与安装

Docker-CE和Docker-EE

  • Docker-CE指Docker社区版,为免费版本,适合个人开发人员和小团队使用。
  • Docker-EE指Docker企业版,为收费版本,专为企业开发和IT团队而设计。

Centos 上安装 Docker-CE

安装成功后,使用 docker version 命令查看 # docker version

Docker核心技术镜像

镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等,通过镜像可以创建一个或多个容器。

镜像搜索 - docker search

搜索Docker Hub(镜像仓库)上的镜像,命令格式: docker search [OPTIONS] TERM

镜像查看 - docker images/docker image ls

列出本地镜像 命令格式: docker images [OPTIONS] [REPOSITORY[:TAG]]

镜像下载 - docker pull

下载远程仓库(如Docker Hub)中的镜像 命令格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

镜像删除 - docker rmi/docker image rm

将本地的一个或多个镜像删除 命令格式:docker rmi [OPTIONS] IMAGE [IMAGE...]

镜像保存备份 -- docker save

将本地的一个或多个镜像打包保存成本地tar文件

命令格式: docker save [OPTIONS] IMAGE [IMAGE...]

镜像备份导入 - docker load

将save命令打包的镜像导入本地镜像库中 :docker load [OPTIONS]

镜像重命名 -- docker tag

命令格式: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

镜像详细信息 -- docker image inspect

命令格式: docker image inspect [OPTIONS] IMAGE [IMAGE...]

相关推荐
IT成长日记15 分钟前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
热爱生活的猴子18 分钟前
阿里云服务器正确配置 Docker 国内镜像的方法
服务器·阿里云·docker
小马爱打代码1 小时前
微服务外联Feign调用:第三方API调用的负载均衡与容灾实战
微服务·架构·负载均衡
FrankYoou4 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
隆里卡那唔5 小时前
在dify中通过http请求neo4j时为什么需要将localhost变为host.docker.internal
http·docker·neo4j
疯子的模样5 小时前
Docker 安装 Neo4j 保姆级教程
docker·容器·neo4j
麦兜*5 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
Lpy25698 小时前
Docker Desktop 安装到D盘(包括镜像下载等)+ 汉化
运维·docker·容器
hunjinYang9 小时前
Tomcat镜像实战:掌握Dockerfile的编写以及发布项目
docker·tomcat
好奇的菜鸟9 小时前
Docker 配置项详解与示例
运维·docker·容器