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

目录

# 概念

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)来持久化容器中的数据。数据卷可以在容器之间共享数据,并且数据卷中的数据在容器删除后不会被自动清空。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高考志愿填报,如何避免报错专业?

高考志愿填报绝对是关键一环节,分数高低暂且不论,因为这个填报志愿,大概率是决定了余生的职业,也有人说,大学可以转专业,毕业还可以跨行就业,工作了还可以转行.....确实有这个可能性&#xff0c…

如何选择合适的半桥栅极驱动芯片?KP8530X,KP85402,KP85211A满足你对半桥栅极驱动一切需求

半桥栅极驱动系列KP8530X,KP85402,KP85211A在功率电子领域展现出卓越的性能和可靠的品质。具备诸多显著优势。首先,半桥栅极驱动系列KP8530X,KP85402,KP85211A拥有出色的耐压性能,可承受高达数百伏的电压&a…

CTFHUB-SSRF-端口扫描

已经提示我们需要扫描8000~9000的端口 ?urlhttp://127.0.0.1:8000/flag.php 访问用burp抓包爆破 通过Burp扫描8000-9000端口开放的web服务,发现8718开放web服务

【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:初步了解 二叉搜索树 🌹🌹期待您的关注 🌹🌹 ❀map与set 📒1.…

【深度学习】GPT-2,Language Models are Unsupervised Multitask Learners,【语言建模】

论文:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf 文章目录 摘要引言方法2.1 训练数据集2.2 输入表示2.3 模型3. 实验3.1 语言建模3.2 Children’s Book Test3.3 LAMBADA3.4 Winograd Sc…

微信小程序轮播图

效果图 详情可见 微信小程序 参照&#xff1a;swiper | uni-app官网 代码&#xff1a; <!--轮播图-- > <swiper interval"2000" autoplay"true" circular"true" style"height: 300px;"><swiper-item style&qu…

YOLOv10改进 | 注意力篇 | YOLOv10引入YOLO-Face提出的SEAM注意力机制优化物体遮挡检测

1. SEAM介绍 1.1 摘要:近年来,基于深度学习的人脸检测算法取得了长足的进步。 这些算法通常可以分为两类,即像 Faster R-CNN 这样的两级检测器和像 YOLO 这样的一级检测器。 由于精度和速度之间具有更好的平衡,一级探测器已广泛应用于许多应用中。 在本文中,我们提出了一…

Emacs之复制时:禁止转换成tab符号(一百三十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

详细分析Oracle日期和时间的基本命令

目录 1. 基本类型2. 常用函数3. Demo 1. 基本类型 Oracle支持不同的日期格式模型&#xff0c;其中包括&#xff1a; ISO 8601: YYYY-MM-DDTHH:MI:SS&#xff0c;例如2024-06-20T14:30:00Oracle内部格式: DD-MON-YYYY HH:MI:SS AM&#xff0c;例如20-JUN-2024 02:30:00 PM DA…

Linux管道与重定向

管道 是进程通信的方法之一&#xff0c;在Linux中用命令1|命令2的形式表示&#xff0c;将前一个命令的结果作为后续命令的参数进行输入&#xff0c;也有tee管道&#xff0c;可以进行多次筛选&#xff0c;即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

VB实现加法计算

textbox1失去焦点&#xff0c;检查输入的值是否为数字。 textbox2中按下Enter键&#xff0c;检查输入的值是否为数字。 textbox3获得焦点&#xff0c;计算textbox1和textbox2的和。 Public Class Form1Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Hand…

使用GPG来解密和加密文件详解

文章目录 使用私钥解密文件示例步骤 注意事项加密文件前提条件导入公钥加密文件输出加密文件示例步骤注意事项邮箱不是必须的情况1&#xff1a;有多个公钥情况2&#xff1a;只有一个公钥示例步骤示例1&#xff1a;指定公钥ID或邮箱地址示例2&#xff1a;密钥环中只有一个相关的…

【LLM之RAG】RAT论文阅读笔记

研究背景 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在各种自然语言推理任务上取得了显著进展&#xff0c;尤其是在结合大规模模型和复杂提示策略&#xff08;如链式思维提示&#xff08;CoT&#xff09;&#xff09;时。然而&#xff0c;LLMs 在推理的事实…

MySQL:SELECT list is not in GROUP BY clause 报错 解决方案

一、前言 一大早上测试环境&#xff0c;发现测试环境的MySQL报错了。 SELECT list is not in GROUP BY clause and contains nonaggregated column二、解决方案 官方文档中提到&#xff1a; 大致意思&#xff1a; 用于GROUP BY的SQL / 92标准要求满足以下条件&#xff1a; SE…

VUE面试题汇总(九)

之间联系&#xff08;Model 和 ViewModel 的双向数据绑定&#xff09; 解析&#xff1a; MVVM 是 Model-View-ViewModel 的缩写。MVVM 是一种设计思想。Model 层代表数据模型&#xff0c;也可以在 Model 中定义数据修改和操作的业务逻辑&#xff1b;View 代表 UI 组件&#xf…

使用RT-Thread Studio创建STM32项目

引言 RT-Thread&#xff08;简称RTT&#xff09;是一个开源的实时操作系统&#xff0c;主要面向嵌入式系统应用。它具有高度可裁剪性、跨平台、高可靠性和实时性等特性&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;、工业控制、智能家居和消费电子等领域。本文将介…

110 Realistic Forest Environment Textures Grass(110+真实的森林环境纹理--草、泥土等)

一组110多个真实的树皮、草、泥土、岩石和其他地面纹理,用于森林环境。 每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包含一个HDRP掩码,以完全支持HDRP。 特点。 110种质地 …

洛杉矶裸机云服务器怎么用

洛杉矶裸机云服务器是一种结合了物理服务器性能和云服务灵活性的高性能计算服务。它为用户提供了高效、安全的计算和存储能力&#xff0c;特别适合需要大量数据处理和快速响应的应用。具体分析如下&#xff0c;rak部落小编为您整理发布洛杉矶裸机云服务器怎么用。 1. 硬件配置选…

大型语言模型在AMD GPU上的推理优化

Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型&#xff08;LLMs&#xff09;已经改变了自然语言处理和理解&#xff0c;促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的…

SAP 新安装的系统,财务开账期OB52需要传输

调整 se11 实用程序 表维护生成器 改成这个 以上参考 SAP 事务码设置为前台不需传输请求_t811flags-CSDN博客