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

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

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

相关文章

android在线阅读代码网站

android在线阅读代码社区: Android 1.6 到 Android 10 的源码: Android OS 在线源代码 - https://www.androidos.net.cn10.0.0_r6 - Android社区 - https://www.androidos.net.cn/ AndroidXRef https://cs.android.com/ https://cs.android.com/android…

Linux 软链接

# 语法 ln -s <文件夹or文件的真实路径> <自定义路径别名> # 例子 ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ~/ens33

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

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

告别繁琐录入,一键解锁OCR魅力:高效文字识别工具推荐

在日常工作中&#xff0c;我们常常会需要找一些模版&#xff0c;如果直接下载编辑某某文档&#xff0c;都是要花钱的。 比如领导让我找个法律文书&#xff0c;改成我们的内容&#xff0c;网上有很多的参考文档&#xff0c;但是不论哪个&#xff0c;下载都要钱&#xff0c;也不…

如何开展小组讨论以强化员工对TPM的关注度?

TPM是一种旨在提高设备综合效率&#xff0c;通过全员参与的方式&#xff0c;实现设备保养和维护的现代化管理体系。因此&#xff0c;如何开展小组讨论以强化员工对TPM的关注度成为了一个值得探讨的话题。本文&#xff0c;深圳天行健精益管理咨询公司为大家分享具体步骤如下&…

YOLOv10改进 | Conv篇 |YOLOv10引入SPD-Conv卷积

1. SPD-Conv介绍 1.1 摘要:卷积神经网络(CNN)在图像分类和目标检测等许多计算机视觉任务中取得了巨大的成功。 然而,在图像分辨率较低或物体较小的更艰巨的任务中,它们的性能会迅速下降。 在本文中,我们指出,这源于现有 CNN 架构中一个有缺陷但常见的设计,即使用跨步卷…

Linux机器通过Docker-Compose安装Jenkins发送Allure报告

目录 一、安装Docker 二、安装Docker Compose 三、准备测试用例 四、配置docker-compose.yml 五、启动Jenkins 六、配置Jenkins和Allure插件 七、创建含pytest的Jenkins任务 八、项目结果通知 1.通过企业微信通知 2.通过邮件通知 九、配置域名DNS解析 最近小编接到一…

Excel中插入的图片在不同电脑上消失的问题及解决方法

在使用Excel时插入图片&#xff0c;然后在不同电脑上打开却发现图片消失并被替换为链接地址&#xff0c;这个问题通常出现于文件中的图片路径没有正确保存或者电脑上缺少相关的图片文件。下面让我们来详细解释这个问题以及可能的解决方法。 ### 问题原因分析1. **相对路径问题…

接到一家公司做团购活动类型的策划海报项目,使用AI给他们设计了相关的海报

在这个充满挑战和机遇的时代&#xff0c;我有幸接到一家公司的委托&#xff0c;为他们策划一场团购活动。这不仅是对我的专业能力的认可&#xff0c;也是对我创新思维的考验。 这家公司是一家知名的电子产品销售商&#xff0c;他们希望通过团购活动来提升产品的销售量和品牌的…

哪个充电宝牌子好?性价比高与质量好并存!热门充电宝推荐!

随着科技的不断进步&#xff0c;我们的日常生活越来越依赖于便携式电子设备。然而&#xff0c;电池续航问题始终是这些设备的一大软肋。为了确保我们的智能手机、平板电脑、甚至是智能手表在忙碌的日子里始终有电&#xff0c;一个可靠的充电宝成为了我们的必备之选。面对市场上…

Nginx + Tomcat 负载均衡、动静分离

前言 Tomcat简介 最初是由Sun的软件构架师詹姆斯邓肯戴维森开发 安装Tomcat后&#xff0c;安装路径下面的目录和文件&#xff0c;是使用或者配置Tomcat的重要文件 Nginx 应用 Nginx是一款非常优秀的HTTP服务器软件 &#xff08;1&#xff09;支持高达50 000个并发连接数的响应…

scrapy模块的基础使用

scrapy模块是爬虫工作者最常用的一个模块之一&#xff0c;因它有许多好用的模板&#xff0c;和丰富的中间件&#xff0c;深受欢迎。 一&#xff0c;scrapy的安装 可以通过pypi的指引进行安装 在终端内输入以下代码&#xff1a; pip install scrapy 二&#xff0c;项目的建…

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的&#xff08;比如这篇&#xff1a;从0开始在visual studio上安装opencv&#xff08;超详细&#xff0c;针对小白&#xff09;&#xff09;&#xff0c;但是中间出现了一些别人没有遇到的问题&#xff0c;虽然原因没有找到&#xff0c;但…

springboot知识点大全

文章目录 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面…

联邦学习——学习笔记1:FedAvg算法

文章目录 本笔记参考自b站up主&#xff1a;丸一口 原视频链接 如上图&#xff0c;现有6个医院&#xff1a;眼科、儿科、妇科、骨科、综合医院1、综合医院2。中间节点为政府。 现政府要求用各个医院的数据训练某个模型&#xff0c;希望对某些疾病进行一些预测&#xff0c;数据…

JavaScript-环境对象

环境对象 指的是函数内部特殊的变量this&#xff0c;它代表了函数运行时所处的环境 作用&#xff1a;弄清this指向谁&#xff0c;可以使代码更整洁 直接调用函数的话&#xff0c;this指向的就是window函数 随调用this就指向谁 function fn(){console.log(this);}fn(); 直接调用…

详解|什么样的SSL证书能助力企业通过等保与密评?

企业在过等级保护&#xff08;简称“等保”&#xff09;与密码评测&#xff08;简称“密评”&#xff09;的时候&#xff0c;SSL证书作为网络安全的基础组件之一&#xff0c;其选择与部署对于企业顺利通过等保测评与密评至关重要。那什么样的SSL证书能够有效助力企业达成这一目…

展厅设计关键因素有哪些

1、选择一站式服务公司 企业不论参加展会还是做展厅设计装修&#xff0c;其目的都是为了更好的展示公司的产品&#xff0c;从而促进与客户的合作。那么展厅设计首先是要找展厅设计公司来做的&#xff0c;不过现在市面上有很多公司都可以设计制作展厅&#xff0c;这就需要客户去…

【系统架构设计师】四、嵌入式基础知识(体系结构|嵌入式系统|多核处理器)

目录 一、嵌入式微处理体系结构 1.1 冯诺依曼结构 1.2 哈佛结构 二、嵌入式系统 2.1 定义 2.2 嵌入式系统特性 三、嵌入式系统的分类 四、嵌入式系统 4.1 嵌入式数据库系统EDBMS 4.1.1.使用环境的特点 4.1.2 系统组成 4.2 嵌入式操作系统EOS 4.3 嵌入式实时操作系…

如何通过自定义模块DIY出专属个性化的CSDN主页?一招教你搞定!

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…