“Docker入门指南:概念与安装详解“

news2024/11/27 8:31:05

目录

# 概念

1. Docker常见问题

2. docker概念和安装

2.1 Docker的组成

2.2 Docker 组件及关系表

2.3 docker核心思想

2.4 docker镜像与容器两个核心概念

2.5 容器概念图

2.6 docker核心技术

2.6.1 镜像 (Image)

概述

关系

示例

2.6.2 容器 (Container)

概述

关系

示例

2.6.3 仓库 (Repository)

概述

关系

示例

2.6.4 对比与关系图表

2.6.5 总结

2.7 docker开始(安装)

2.8 docker中Run的流程和Docker原理

2.8.1 docker中run的流程

2.8.2 docker run 命令的关键参数和配置

2.8.3 示例

2.9 docker工作流程


# 概念

  • 个人理解介绍docker:
    • 有了docker后,我可以把自己写的项目上传到linux虚拟机上(需要参考如何上传以及上传内容),根据dockerfile构建镜像文件,并且创建docker容器来访问这个项目,所有的docker镜像也可以发布到阿里云上,或者发布到DockerHub上面,非常的方便。我启动这个容器就相当于启动了这个jar包,启动了这个项目。
  • 重点:
    1. 常用docker命令。
    2. 容器。
    3. 镜像。
    4. DockerFile文件。
    5. Docker网络。

1. Docker常见问题

  • 出现问题就重启systemctl restart docker;
  • 首次进入docker时需要登录到root用户,输入su root 密码是root;
  • Error response from daemon: Container:
  • docker容器开启问题。查看所有容器docker ps -a 开启容器docker start 容器id;
  • 参考:docker进入容器报:Error response from daemon: Container ******* is not running_docker error response from daemon-CSDN博客
  • vi命令用不了(说明没有这个命令需要下载这个命令)
  • 方式一:apt-get update

  • 方式一:apt-get update

2. docker概念和安装

  • 场景:(是在VMware中的linux系统里操作的)

  • Docker容器与镜像(docker的每一个容器在创建时都会指定使用的镜像)

    一个容器只能使用一个镜像。容器是基于镜像创建的,镜像是容器的基础。每个容器都是基于一个特定的镜像运行的,它包含了该镜像的文件系统和应用程序。

    在Docker中,每个容器都是相互隔离的,并且具有自己的文件系统、进程空间和网络接口。因此,一个容器只能使用一个镜像来构建其环境和运行应用程序。

    如果你需要在一个容器中运行多个应用程序,可以在镜像中预先配置好这些应用程序,或者在容器中安装和运行额外的应用程序。但是这些应用程序仍然是基于同一个镜像运行的,容器本身仍然只能使用一个镜像。

2.1 Docker的组成

(镜像images、容器containers、构建docker镜像文件Dockerfile、将镜像打包下载Tar files、仓库Registry)其余的都是当前板块使用的命令

2.2 Docker 组件及关系表

组件类别组件名称说明关系
Docker 引擎Docker CLI命令行界面,用户通过它与 Docker Daemon 交互。与 Docker Daemon 通信。
Docker Daemon核心服务,处理容器的构建、运行和管理。- 与 Docker CLI 通信。
- 使用 Containerd 管理容器。
- 直接管理容器、镜像、卷和网络。
Containerd高效的容器运行时,管理容器生命周期。被 Docker Daemon 使用。
RunC执行容器的 CLI 工具,符合 OCI 标准。被 Containerd 使用。
容器管理容器 (Container)容器化的应用实例。由 Docker Daemon 管理。
镜像 (Image)容器运行所需的文件系统和元数据。由 Docker Daemon 管理。
卷 (Volume)持久化数据存储,供容器使用。由 Docker Daemon 管理。
网络 (Network)容器之间和外部的网络配置。由 Docker Daemon 管理。
Docker 生态系统Docker Compose用于定义和运行多容器应用的工具。使用 Docker CLI 与 Docker Daemon 通信。
Docker SwarmDocker 的集群管理和编排工具。编排 Docker Daemon。
Kubernetes开源的容器编排平台,管理和调度容器。编排 Docker Daemon

2.3 docker核心思想

  • docker核心思想,打包装箱,每个箱子都是互相隔离的。
  • Docker:容器思想,省去了我们部署环境的复杂性,好比发布项目的时候需要redis环境、jdk环境、MySQL环境及ES环境等等,每次部署这些环境的时候都非常复杂耗时,这时候有了docker帮我们省去了部署环境的耗时性,方便实用。docker容器,可以将这些环境都包含在内。
  • 容器/s的速度比虚拟机/min的速度快了很多。

2.4 docker镜像与容器两个核心概念

Docker容器和镜像是Docker技术中的两个核心概念,它们之间有以下区别:

  1. 镜像(Image):镜像是一个只读的模板,包含了运行Docker容器所需的文件系统、代码和依赖。镜像是构建容器的基础,可以理解为一个软件包或者一个软件的快照。镜像可以从Docker Hub等仓库中获取,也可以通过Dockerfile自定义构建。
    1. 获取的方式(1.从远程仓库下载镜像、2.拷贝别人的镜像、3.自己制作一个镜像DockerFile)
  2. 容器(Container):容器是镜像的运行实例,是一个独立运行的应用程序。容器通过镜像创建,可以启动、停止、删除和重启。容器是轻量级的,独立于宿主机的进程隔离环境,可以快速启动和停止。

2.5 容器概念图

  • 传统虚拟机:虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
  • 容器内的应用是直接运行在宿主机的内容,容器没有自己的内核,也没有虚拟我们的硬件,非常轻便。
  • 且每个容器之间是相互隔离,每个容器都有一个属于自己的文件系统,互不影响

docker容器:

对比原始的虚拟机技术:

2.6 docker核心技术

镜像(Image)、容器(Container)、仓库(Repository)是 Docker 技术的核心概念。它们一起构成了构建、分发和运行容器化应用程序的基础;

2.6.1 镜像 (Image)
概述
  • 定义:镜像是一个轻量级、不可变的二进制包,包含了运行应用程序所需的所有文件、配置和依赖。镜像是创建容器的基础。
  • 特性
    • 不可变:一旦创建,镜像内容不会改变。
    • 分层存储:每个镜像由多个层组成,每一层表示一个文件系统快照,可以共享和复用。
    • 便携性:镜像可以从一个环境转移到另一个环境,而不会影响应用的运行。
  • 用途
    • 应用交付:镜像用于打包应用及其环境,确保一致性。
    • 版本控制:镜像可以使用标签来标记不同的版本。
    • 基础镜像:可作为其他镜像的基础(如 alpineubuntu 等)。
关系
  • 与容器:镜像是容器的蓝图,容器是镜像的运行实例。
  • 与仓库:镜像可以存储在仓库中,以便分发和共享。
示例
docker pull nginx
docker run -d nginx
  • docker pull nginx:从仓库中拉取 nginx 镜像。
  • docker run -d nginx:基于 nginx 镜像创建并运行一个容器。
2.6.2 容器 (Container)
概述
  • 定义:容器是镜像的运行实例,提供隔离的操作环境,确保应用程序在任何环境中都能一致地运行。
  • 特性
    • 轻量级:比传统虚拟机更轻量,没有独立的操作系统内核。
    • 可移植性:运行在任何支持 Docker 的主机上。
    • 隔离性:每个容器都有独立的文件系统、网络和进程空间。
    • 短暂性:容器可以快速启动、停止、销毁,适合短暂任务或微服务架构。
  • 用途
    • 应用运行:容器运行应用和其所有依赖环境。
    • 开发测试:开发者可以在容器中进行开发和测试,确保环境一致。
    • 部署:容器用于部署到生产环境,保证应用的可预测性。
关系
  • 与镜像:容器是从镜像创建的。
  • 与仓库:容器使用从仓库中拉取的镜像创建和运行。
示例
docker run -it --name mycontainer ubuntu /bin/bash
  • 运行一个基于 ubuntu 镜像的容器,并启动一个 Bash 终端。
2.6.3 仓库 (Repository)
概述
  • 定义:仓库是存储和分发 Docker 镜像的地方,可以在本地或远程服务器上。官方公共仓库是 Docker Hub。
  • 特性
    • 镜像存储:仓库中可以包含多个镜像,每个镜像可以有多个版本标签。
    • 共享:用户可以将镜像推送到公共或私有仓库,以便共享和分发。
    • 权限控制:私有仓库可以配置权限,限制访问。
  • 用途
    • 镜像分发:仓库是分发和共享镜像的主要手段。
    • 持续集成:开发和部署流程中,可以自动推送和拉取镜像。
    • 版本管理:管理和维护镜像的不同版本。
关系
  • 与镜像:仓库中存储的内容是 Docker 镜像。
  • 与容器:容器使用仓库中的镜像来创建。
示例
docker push myrepo/myimage:latest
docker pull myrepo/myimage:latest
  • docker push myrepo/myimage:latest:将镜像推送到 myrepo 仓库。
  • docker pull myrepo/myimage:latest:从 myrepo 仓库中拉取镜像。
2.6.4 对比与关系图表
概念定义特性关系示例
镜像轻量级、不可变的二进制包,包含运行应用所需的文件和依赖。不可变、分层存储、便携性、可版本控制。创建容器的基础,存储在仓库中。docker pulldocker build
容器镜像的运行实例,提供隔离的操作环境。轻量级、可移植、隔离性、短暂性。从镜像创建并运行,使用仓库中的镜像。docker rundocker stop
仓库存储和分发 Docker 镜像的地方。镜像存储、共享、权限控制。存储镜像,供创建容器使用。docker pushdocker pull
2.6.5 总结
  • 镜像 是应用程序的模板,通过分层文件系统构建,提供了可移植性和版本控制。
  • 容器 是运行镜像的实例,确保应用在隔离的环境中一致地执行,轻量且高效。
  • 仓库 提供镜像的存储和分发功能,支持应用的共享和分发。

2.7 docker开始(安装)

1. 确认系统版本

    确保系统是 CentOS 7 或以上版本。

2. yum安装gcc相关环境

yum -y install gcc
yum -y install gcc-c++

3. 卸载旧版本 Docker

yum remove docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-engine

4. 安装必要的软件包

yum install -y yum-utils

5. 设置 Docker 镜像仓库

    推荐使用国内镜像,例如阿里云的镜像:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

   在docker安装成功后配置一下阿里云的加速:

  • 去自己的阿里云中寻找镜像加速

6. 更新 Yum 软件包索引

yum makecache fast

7. 安装 Docker CE

yum install docker-ce docker-ce-cli containerd.io

8. 启动 Docker

systemctl start docker

9. 设置 Docker 开机自启

systemctl enable docker

10. 验证 Docker 安装

  • 检查 Docker 版本:
docker version
  • 运行一个测试容器:
docker run hello-world
  • 查看已安装Docker镜像:
docker images

11. 卸载 Docker

  • 停止 Docker 服务:
systemctl stop docker
  • 移除 Docker 相关包:
yum -y remove docker-ce docker-ce-cli containerd.io
  • 清理 Docker 数据:
rm -rf /var/lib/docker

以上步骤整理了在 CentOS 系统上安装和管理 Docker CE 的流程;

2.8 docker中Run的流程和Docker原理

(hello world是怎样运行的)

  • Docker为什么比vm快?
    1. Docker有着比虚拟机更少的抽象层;
    2. Docker利用的是宿主机的内核,vm需要是Cuest OS;
2.8.1 docker中run的流程

图流程:

Docker 的 docker run 命令是用来创建并启动一个新的容器实例的主要命令,它涉及到多个步骤和参数配置。以下是 Docker run 命令的流程和关键步骤:

  1. 检查本地是否存在指定的镜像
    • 如果本地没有指定的镜像,Docker 会尝试从默认的镜像仓库(如 Docker Hub)拉取。
  2. 创建新的容器实例
    • Docker 使用指定的镜像来创建一个新的容器实例。在这个过程中,Docker 会分配一个唯一的容器 ID。
  3. 配置容器运行时参数
    • Docker 根据 docker run 命令中指定的参数(如端口映射、环境变量、挂载的数据卷等)来配置容器的运行时环境。
  4. 启动容器
    • Docker 启动容器实例,并在容器内部执行指定的启动命令(如容器启动时运行的应用程序)。
  5. 监控容器运行状态
    • Docker 后台持续监控容器的运行状态,确保容器持续运行,并处理容器可能的异常退出或其他问题。
  6. 输出容器日志
    • Docker 将容器的标准输出和标准错误输出(日志)连接到宿主机上,以便用户可以查看容器运行时产生的输出信息。
2.8.2 docker run 命令的关键参数和配置
  • -d:后台运行容器。
  • -it:交互式终端,通常与 -d 配合使用。
  • --name:指定容器的名称。
  • -p:端口映射,将容器内部的端口映射到宿主机上的端口。
  • -e:设置环境变量。
  • -v:挂载数据卷,与宿主机共享数据。
  • --network:指定容器使用的网络模式。
  • --rm:容器停止后自动删除。
2.8.3 示例

以下是一个示例 docker run 命令及其流程:

docker run -d --name mynginx -p 8080:80 nginx
  1. Docker 检查本地是否有 nginx 镜像,如果没有则从默认仓库拉取。
  2. Docker 使用 nginx 镜像创建一个新的容器实例,分配一个唯一的容器 ID。
  3. Docker 配置容器运行时参数:
    • -d 让容器在后台运行。
    • --name mynginx 指定容器名称为 mynginx
    • -p 8080:80 将容器内部的 80 端口映射到宿主机的 8080 端口。
  4. Docker 启动 nginx 容器,并开始监听端口。
  5. 用户可以访问 http://localhost:8080 来访问宿主机上运行的 nginx 服务。

这样,docker run 命令完成了从镜像创建到容器运行的整个流程,使得用户可以方便地启动和管理 Docker 容器。

2.9 docker工作流程

以下是Docker的工作流程及其关键步骤的表格表示:

步骤说明
1. 镜像管理Docker 使用镜像来打包和分发应用程序及其所有依赖。
2. 容器生命周期管理Docker 容器是镜像的运行实例,提供应用程序的隔离运行环境。容器的生命周期包括创建、启动、停止、删除等过程。
3. 网络管理Docker 管理容器之间的网络通信,以及容器与宿主机之间的网络通信。默认情况下,Docker 为容器创建一个虚拟网络,容器可以通过桥接、主机模式、Overlay 等网络模式进行通信。
4. 存储管理Docker 使用数据卷(Volumes)和绑定挂载(Bind Mounts)来持久化容器中的数据。数据卷可以在容器之间共享数据,并且数据卷中的数据在容器删除后不会被自动清空。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贪吃蛇——c语言版

文章目录 演示效果实现的基本功能技术要点源代码实现功能GameStart打印欢迎界面和功能介绍绘制地图创建蛇创建食物 GameRun打印提示信息蛇每走一步 GameEnd蛇死亡后继续游戏 演示效果 贪吃蛇1.0演示视频 将终端应用程序改为控制台主机 实现的基本功能 贪吃蛇地图绘制蛇吃食物的…

[Mysql] 数据库基本概念

前言---数据库系统发展史 当今主流数据库介绍 一、操作系统 Linux操作系统 :RedHat CentOS Debian Ubuntu OpenSUSE 信创标准 会让系统逐渐国产化 国产系统:华为 欧拉 阿里 龙蜥 腾讯 tencentOS 银河麒麟 中标麒麟…

分享:MoneyPrinterTurbo只需一个视频主题或关键词全自动生成一个高清的短视频

MoneyPrinterTurbo是基于原有的MoneyPrinter项目进行优化和重构后推出的新版本。它利用先进的AI技术,通过用户提供的视频主题或关键词,全自动生成视频文案、素材、字幕以及背景音乐,并最终合成高清的短视频。 功能特性 AI智能文案生成&…

redis高可用-主从同步

目录 一:背景 二:实现方式 三:实际使用 一:背景 上一节我们介绍了centos下redis下的安装配置,是在单台服务器部署一个redis服务,这种模式是单机模式下使用的,如果出现服务故障,re…

Spring AI 调用 openAI 进行语音识别

Spring AI支持语音识别功能,目前仅支持OpenAI的Transcription模型。 项目搭建: 参考 Spring AI 介绍以及与 Spring Boot 项目整合 源码示例: RestController RequestMapping("/openai") public class OpenAiIAudioTranscriptionC…

幂集000

题目链接 幂集 题目描述 注意点 集合中不包含重复的元素 解答思路 可以使用深度优先遍历的思想按顺序将相应的元素添加到子集中&#xff0c;并将每个子集添加到结果集 代码 class Solution {public List<List<Integer>> subsets(int[] nums) {List<List&…

VirtualBox虚拟机下安装Ubuntu24.04操作系统

目录 0 背景1 虚拟机的安装1.1 下载安装包1.2 走安装向导 2 操作系统的安装2.1 下载光盘镜像文件2.2 安装操作系统到虚拟机上 3 基本配置3.1 网络连接方式3.2 共享文件夹3.3 设置显存大小 0 背景 首先说说Ubuntu系统&#xff0c;或者更普遍一点&#xff0c;Linux系统究竟有什么…

Java项目学习(员工管理)

新增、员工列表、编辑员工整体代码流程与登录基本一致。 1、新增员工 RestController RequestMapping("/admin/employee")EmployeeController 类中使用了注解 RestController 用于构建 RESTful 风格的 API&#xff0c;其中每个方法的返回值会直接序列化为 JSON 或…

Mirillis Action v4 解锁版安装教程(专业高清屏幕录像软件)

前言 Mirillis Action!&#xff08;暗神屏幕录制软件&#xff09;专业高清屏幕录像软件&#xff0c;被誉为游戏视频三大神器之一。这款屏幕录制软件和游戏录制软件&#xff0c;拥有三大硬件加速技术&#xff0c;支持以超高清视频画质录制桌面和实况直播&#xff0c;超清视频画…

90 Realistic Arctic Environment Textures snow(90+种逼真的北极环境纹理--雪、冰及更多)

一组90多个逼真的雪、冰、雪地岩石和其他被雪覆盖的地面纹理,供在雪地环境中使用。每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准的Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。…

揭示数据库内核的奥秘--手写数据库toadb开源项目

揭示数据库内核的奥秘–手写数据库toadb 数据为王的时代 在信息化时代&#xff0c;数据已成为企业和应用不可或缺的核心&#xff0c;而数据库不仅是数据的仓库&#xff0c;更是支撑业务决策、系统运行的基石。对于求职者而言&#xff0c;掌握数据库知识已成为求职市场上的必考…

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件&#xff0c;类似STM32的STM32CubeMX工具软件。 &#x1f4cd;AT32 TOOL系列工具下载地址&#xff1a;https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

递归乘法00

题目链接 递归乘法 题目描述 注意点 保证乘法范围不会溢出 解答思路 使用加法代替乘法&#xff0c;递归计算A * B&#xff0c;每个递归的过程加上一个A&#xff0c;且对B减1&#xff0c;直到B为0为止 代码 class Solution {public int multiply(int A, int B) {if (B 0…

初学51单片机之数字秒表

不同数据类型间的相互转换 在C语言中&#xff0c;不同数据类型之间是可以混合运算的。当表达式中的数据类型不一致时&#xff0c;首先转换为同一类型&#xff0c;然后再进行计算。C语言有两种方式实现类型转换。一是自动类型转换&#xff0c;另外一种是强制类型转换。 转换的主…

哈尔滨等保的定级备案

哈尔滨等保的定级备案是确保信息安全&#xff0c;保障国家和人民利益的重要措施。在当前信息化社会&#xff0c;信息安全已成为国家发展的重要支撑&#xff0c;哈尔滨等保的定级备案工作显得尤为关键。本文将从哈尔滨等保定级备案的背景、定级标准、备案流程、实施意义等方面进…

ubuntu安装qtcreator与环境配置

sudo apt-get update sudo apt-get install gcc g # 两个编译器 sudo apt-get install build-essential # 编译c/c所需要的软件包 sudo apt-get install libgl1-mesa-dev # 安装mesa&#xff0c;Mesa 实际上是一个库&#xff0c;它实现了多种图形 API 规范 sudo apt-get insta…

快排(前后指针实现)

前言 快排解决办法有很多种&#xff0c;这里我再拿出来一种前后指针版本 虽然这个版本的时间复杂度和霍尔一样&#xff0c;逻辑也差不多&#xff0c;但是实际排序过程&#xff0c;确实会比霍尔慢一点 快排gif 快排前后指针实现逻辑&#xff1a; 前后指针实现逻辑(升序):单趟排序…

双写一致性

双写一致性 当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致。 注意这里是对数据库进行写操作而不是读操作&#xff0c;通常我们有两种方式完成这个写操作&#xff0c;分别是&#xff1a;先删除缓存再修改数据库 和 先修改数据库再删除…

视觉与运动控制1

机器视觉与运动控制 机器视觉的应用 机器视觉是计算机视觉的一个分支&#xff0c;工业自动化领域中的视觉控制或视觉应用&#xff0c;主要指的是通过前端光学摄像头&#xff0c;从采集到的数字化图像中提取相关信息&#xff0c;进行分析处理之后&#xff0c;用于对生产线流程…