Docker学习

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)而且更轻量级。

Docker 的主要用途

  1. 容器化应用
    • Docker 允许开发者将应用及其依赖环境打包成一个独立的容器,这样可以确保应用在任何环境中都能以相同的方式运行。
  2. 环境一致性
    • 通过 Docker,可以轻松实现开发、测试和生产环境的一致性,避免"在我的机器上可以运行"的问题。
  3. 快速部署和扩展
    • Docker 容器可以快速启动,支持大规模的容器集群,适用于微服务架构,可以轻松实现应用的横向扩展。
  4. 持续集成和持续部署(CI/CD)
    • Docker 可以集成到 CI/CD 流程中,自动化测试和部署,提高开发效率。
  5. 隔离和资源控制
    • Docker 容器在运行时相互隔离,提供了安全性和资源隔离,每个容器都有自己的网络和命名空间。
  6. 多云平台和混合云部署
    • Docker 容器可以在不同的云平台和操作系统上运行,支持多云和混合云部署策略。
  7. 微服务架构
    • Docker 是实现微服务架构的理想选择,每个服务都可以作为一个独立的容器来部署和管理。

Docker 的核心组件包括 Docker 引擎(负责容器化的核心运行时和组件)、Docker Hub(用于存储和分享镜像的云服务)和 Docker Compose(用于定义和运行多容器 Docker 应用的工具)。Docker 已经成为现代软件开发和运维的重要组成部分,被广泛应用于各种规模的组织中。

用白话解释docker具体的作用:

应用程序就像一个机器,机器中包含了很多零件,那么应用程序中的代码和运行环境就像其中的零件,而Docker 就像是一个大箱子,它把这个复杂的机器整个打包起来,连着所有的零件,一起放到箱子里。这样,无论你把这个箱子搬到哪个地方,只要打开箱子,机器就能像原来一样工作,不用再重新组装。

Docker 还能同时管理很多这样的箱子。如果你有很多这样的机器,Docker 可以帮你在不同的地方快速地搬运和启动这些机器,还能保证它们之间不会互相干扰。

Docker、容器、镜像的关系

  1. Docker
    • Docker是一个开源的平台,用于开发、运输(shipping)和运行应用程序。Docker可以将应用程序与基础设施分开,从而可以快速交付软件。通过利用Docker的方法进行快速交付、测试和部署代码,可以显著缩短编写代码和在生产环境中运行代码之间的周期。
  2. 容器
    • 容器是Docker中的一个核心概念。容器是标准化的可执行组件,它打包了应用程序及其所有依赖项,确保它在任何环境中都能一致地运行。容器与其他容器共享主机的操作系统内核,但它们在用户空间中作为独立的进程运行。这意味着容器比传统的虚拟机更轻量级,启动更快,资源利用率更高。容器是短暂的,一旦关闭,所有的状态更改都会消失,但可以使用Docker的卷(volumes)功能来持久化数据。
  3. 镜像
    • 镜像是Docker中的另一个核心概念。镜像是构建容器的只读模板,它包含了运行应用程序所需的所有代码、运行库、环境变量和配置文件。镜像通常基于其他镜像构建,并可以层层叠加。例如,可以从一个基本的Ubuntu镜像开始,然后添加应用程序和依赖项,构建一个自定义的镜像。一旦创建了镜像,可以使用Docker命令来运行它,创建一个或多个容器。镜像是可复用的,可以在不同的机器和环境中共享和运行相同的镜像。

总结来说:

Docker是一个平台,它允许创建和运行容器。容器是运行应用程序的实例,而镜像是创建这些容器的模板。

可以使用Docker创建一个包含应用程序和其环境的模板(镜像),然后可以使用这个模板来创建多个独立的运行实例(容器)。每个容器都是基于同一个镜像,但它们可以独立运行,有自己的状态和数据。这种模式使得应用程序的部署和扩展变得非常灵活和高效。

复制容器

复制容器通常指的是基于一个已存在的容器创建一个新的容器实例。

使用 Docker 复制容器时,实际上并不是在复制一个现有的容器,而是基于同一个镜像创建一个新的容器。这意味着新容器将具有与原始容器相同的文件系统和初始状态,但它们是两个完全独立的容器。

  1. 镜像:在 Docker 中,容器是基于镜像创建的。镜像是一个静态的文件,包含了创建容器所需的所有文件和配置。当你复制一个容器时,你实际上是在使用同一个镜像来创建一个新的容器实例。
  2. 容器状态:容器的状态包括运行中的进程、网络配置、挂载的卷等,这些并不会被复制。新创建的容器将从一个干净的状态开始,任何在原始容器中运行时的变更(如写入的数据、修改的配置)都不会被自动复制到新容器中。
  3. 数据持久化:如果你想要在新容器中保留原始容器的数据,你需要使用 Docker 卷(volumes)来持久化数据。通过将数据存储在卷中,并在新容器中挂载相同的卷,你可以让新容器访问原始容器中的数据。
  4. 配置和环境变量:如果你在创建新容器时需要不同的配置或环境变量,你需要在创建新容器时指定这些设置。
  5. 容器标识符:每个 Docker 容器都有一个唯一的标识符(UUID),因此即使是基于相同镜像创建的容器,它们也是不同的实体。

Linux安装docker

Linux安装docker

docker命令

docker命令

docker中安装mysql数据库

docker中安装mysql数据库

docker使用报错

docker拉取镜像一直在加载中,且会提示error pulling image configuration

相关推荐
Sheffield11 小时前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield19 小时前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽20 小时前
win10下运行Start Broker and Proxy报错解决
docker
用户13573999256602 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h2 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔2 天前
通过 Docker 创建开发环境
docker·开发环境
冬奇Lab2 天前
一天一个开源项目(第41篇):Workout.cool - 现代化开源健身教练平台,训练计划与进度追踪
docker·开源·资讯
天朝八阿哥3 天前
使用Docker+vscode搭建离线的go开发调试环境
后端·docker·visual studio code
阿虎儿4 天前
Docker安装(非sudo用户可用)
docker
fetasty5 天前
rustfs加picgo图床搭建
docker