docker的基础知识

介绍docker

     什么是docker

      Docker是一种开源的容器化平台,可以让开发人员将应用程序与其依赖的运行时环境一起打包到一个称为容器的独立单元中。这个容器可以在任何支持Docker的机器上运行,提供了一种快速和可移植的方式来部署应用程序。Docker的核心组件包括Docker引擎、Docker镜像和Docker容器。Docker引擎是一个用于构建和管理容器的开源工具,它使用容器技术来隔离应用程序和其运行时环境。Docker镜像是一个只读的模板,包含了应用程序运行所需的所有文件和配置。Docker容器是根据Docker镜像创建的可运行实例。通过使用Docker,开发人员可以更轻松地进行应用程序开发、测试和部署,提高了开发和运维的效率,并提供了更好的可移植性和可扩展性。

     docker可以做什么     

    Docker是一种开源的容器化平台,可以用于快速构建、打包、部署和运行应用程序。它具有以下功能:

  1. 轻量级:Docker容器使用操作系统级别的虚拟化,比传统虚拟机更轻量级,可以更高效地利用资源。

  2. 隔离性:每个Docker容器都是独立的,互相隔离,可以在同一台计算机上同时运行多个容器,互不干扰。

  3. 快速部署:Docker容器可以快速地创建、启动和停止,使应用程序的部署过程更加简洁和高效。

  4. 可移植性:Docker容器可以在任何支持Docker的操作系统中运行,提供了更高的应用程序可移植性。

  5. 版本控制:Docker可以通过容器镜像的方式来构建和分发应用程序,容器镜像可以保存应用程序的版本信息,方便进行版本管理和回滚操作。

  6. 自动化:Docker可以结合自动化工具,如Docker Compose和Docker Swarm,实现应用程序的自动化部署、扩容和管理。

      怎么获取Docker

        要获取Docker,按照以下步骤进行操作:

  1. 操作系统要求:Docker 可以在多种操作系统上运行,包括 Windows、macOS 和 Linux。请确保你的操作系统符合 Docker 的要求。

  2. 下载 Docker 安装程序:根据你的操作系统,下载适合的 Docker 安装程序。你可以在 Docker 官方网站上找到正确的下载链接。

  3. 安装 Docker:运行下载的 Docker 安装程序,并按照向导进行安装。根据不同的操作系统,安装步骤可能会有所不同。

  4. 配置 Docker:安装完成后,你需要配置 Docker。根据你的操作系统,配置可能会有所不同。例如,在 Windows 上,你可能需要启用 Hyper-V 或 WSL 2,并配置 Docker 的资源使用情况。

  5. 验证 Docker 安装:安装完成后,打开命令行终端,并运行以下命令来验证 Docker 是否正确安装:

         获取docker的仓库      

          要获取Docker仓库,可以按照以下步骤进行操作:

  1. 首先,你需要安装Docker。Docker官方提供了各种操作系统的安装指南,你可以根据自己的操作系统选择相应的安装方式。可以在Docker官方网站上找到适合自己的安装教程。

  2. 安装完成后,启动Docker服务。

  3. 接下来,你需要在Docker的官方仓库Docker Hub中注册一个账号。如果你已经有账号,可以直接登录。如果没有账号,可以点击"Sign Up"按钮注册一个新账号。

  4. 登录Docker Hub账号后,你可以在搜索框中输入你感兴趣的镜像名称,例如"nginx"。然后点击搜索按钮,就可以找到相关的镜像。

  5. 点击镜像名称后,你可以查看该镜像的相关信息,包括版本、大小、创建者等。如果你对该镜像感兴趣,可以在命令行中使用docker pull <镜像名称>命令来下载该镜像。例如,要下载nginx镜像,你可以运行docker pull nginx命令。

  6. 下载镜像后,你可以使用docker images命令来查看已下载的镜像列表。

  7. 如果你希望将自己的镜像上传到Docker Hub仓库,可以使用docker login命令登录自己的Docker Hub账号。然后,使用docker tag <本地镜像名称> <Docker Hub用户名>/<镜像名称>:<版本号>命令给本地镜像打标签。最后,使用docker push <Docker Hub用户名>/<镜像名称>:<版本号>命令将镜像上传到Docker Hub仓库。

            注:加速方式
           1、请求时制定镜像地址
           docker pull registry.docker-cn.com/library/ubuntu:16.04

          2、启动docker守护进程时,添加--registry-mirror参数

          3、修改配置文件/etc/docker/daemon.json
          {
                "registry-mirrors": ["https://registry.docker-cn.com"]
           }

 架构  

       Docker的架构是一个客户端-服务器架构,主要包含了以下几个关键组件:

  1. Docker客户端(Client):用户与Docker交互的命令行工具,可以通过命令行或API与Docker服务器进行交互,发送命令给Docker服务器。

  2. Docker服务器(Server):也被称为Docker引擎(Docker Engine),负责管理所有的Docker容器,同时也负责构建、运行和分发镜像(Images)。

  3. Docker镜像(Images):Docker镜像是用于创建Docker容器的模板。镜像包含了运行一个应用所需的所有文件和依赖,可以看作是一个只读的文件系统。

  4. Docker容器(Containers):Docker容器是Docker运行时的实例,它是从Docker镜像创建的。容器可以被启动、停止、删除,它是一个隔离的运行环境,可以在容器中运行应用。

  5. Docker仓库(Registry):Docker仓库是用来存储和分享Docker镜像的地方。官方的Docker仓库是Docker Hub,用户可以从Docker Hub上下载公共的镜像,也可以将自己的镜像上传到Docker Hub。

  6. Docker网络(Networking):Docker网络允许容器之间进行通信。Docker提供了多种网络模式,包括桥接网络、主机网络和容器网络等。

  7. Docker数据卷(Volumes):Docker数据卷用来在容器和主机之间共享数据。数据卷可以实现容器数据的持久化和共享。

          整体架构如下:

   +-------------------+|   Docker Client   |+--------+----------+||       Docker APIv+--------+----------+|   Docker Server   |+--------+----------+||       Docker Imagev+--------+----------+|     Docker         ||     Container      |+--------+----------+||      Docker Networkingv+--------+----------+|    Docker Network |+--------+----------+||      Docker Volumesv+-------------------+|   Persistent Data |+-------------------+

 docker的安装  

      在CentOS中安装Docker的详细步骤如下:

  1. 卸载旧版本的Docker(如果有):

    sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    

  2. 安装依赖包:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    

  3. 设置Docker的稳定版本仓库:

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

  4. 安装Docker:

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

  5. 启动Docker服务:

    sudo systemctl start docker
    

  6. 设置Docker开机自启动:

    sudo systemctl enable docker
    

  7. 验证Docker是否安装成功:

    sudo docker run hello-world
    

    如果一切正常,将会输出一条欢迎信息。

  8. 可选:将当前用户添加到Docker用户组(以便无需使用sudo即可运行Docker命令):

    sudo usermod -aG docker $USER
    

    请注意,在执行此命令后,您将需要注销并重新登录以使更改生效。

         参考路径如下:https://docs.docker.com/install/linux/docker-ce/centos/#os-requirementsicon-default.png?t=N7T8https://docs.docker.com/install/linux/docker-ce/centos/#os-requirements

 docker的组成有哪些     

      Docker是一个开源的容器化平台,由以下几个主要组件组成:

  1. Docker引擎(Docker Engine): Docker引擎是Docker的核心组件,负责构建和运行容器。它包括三个关键的部分:镜像(Image)、容器(Container)和守护进程(Daemon)。

    • 镜像(Image):Docker镜像是由文件系统和相关参数构成的只读模板。它包含了运行容器所需的所有内容,如代码、运行环境和依赖项等。
    • 容器(Container):Docker容器是从镜像创建的运行实例。每个容器都是独立且隔离的,可以在同一主机上运行多个容器。
    • 守护进程(Daemon):Docker守护进程是在主机上运行的背景服务,负责管理Docker引擎和容器。
  2. Docker Compose: Docker Compose是一个用于定义和运行多容器Docker应用的工具。它使用YAML文件定义应用的服务、网络和卷等配置,并通过一条命令启动、停止和管理整个应用。

  3. Docker Swarm: Docker Swarm是Docker官方的集群和调度管理工具,用于在多台主机上创建和管理Docker容器集群。它通过将多个Docker主机组织成一个虚拟的Docker引擎,实现容器的自动化部署和水平扩展。

  4. Docker Registry: Docker Registry是用于存储和分发Docker镜像的集中化存储库。Docker Hub是Docker官方提供的公共Registry,用户可以在其中上传、下载和共享镜像。此外,用户还可以搭建自己的私有Registry,用于存储私有的或经过修改的镜像。

  5. Docker CLI(Command Line Interface): Docker CLI是Docker的命令行工具,用于与Docker引擎进行交互。通过Docker CLI,用户可以运行各种命令来构建、运行、管理和监控Docker容器和镜像。

 docker的常用命令

     常用的Docker命令如下:

  1. docker run:创建并启动一个新的容器。

    • 参数说明:
      • -d:后台运行容器。
      • -it:交互式终端,可以进入容器内部进行操作。
      • --name:为容器指定一个自定义名称。
      • -p:指定容器与主机之间的端口映射。
      • -v:挂载卷,将主机上的目录挂载到容器内部。
      • --rm:容器停止后自动删除。
  2. docker stop:停止一个或多个容器。

    • 参数说明:
      • 容器ID或容器名称:要停止的容器的ID或名称。
  3. docker start:启动一个或多个停止的容器。

    • 参数说明:
      • 容器ID或容器名称:要启动的容器的ID或名称。
  4. docker restart:重启一个或多个容器。

    • 参数说明:
      • 容器ID或容器名称:要重启的容器的ID或名称。
  5. docker ps:列出当前运行的容器。

    • 参数说明:
      • -a:列出所有的容器,包括已停止的。
  6. docker images:列出当前系统中的镜像。

  7. docker pull:从仓库中下载一个镜像。

    • 参数说明:
      • 镜像名称:要下载的镜像的名称。
  8. docker push:将一个镜像推送到仓库中。

    • 参数说明:
      • 镜像名称:要推送的镜像的名称。
  9. docker rmi:删除一个或多个镜像。

    • 参数说明:
      • 镜像ID或镜像名称:要删除的镜像的ID或名称。
  10. docker rm:删除一个或多个容器。

  • 参数说明:
    • 容器ID或容器名称:要删除的容器的ID或名称。
  1. docker exec:在运行的容器中执行命令。
  • 参数说明:
    • -it:交互式终端。
    • 容器ID或容器名称:要执行命令的容器的ID或名称。
    • 命令:要执行的命令。

docker的镜像

      镜像是Docker容器的基本组成部分,可以将其理解为容器的只读模板或者是一个软件包。镜像包含了运行容器所需的所有文件系统、库、二进制文件、环境变量和配置文件等。

     镜像是一个轻量级、可移植、自包含的软件包,它可以在不同的环境中运行,无需关心底层的操作系统和软件依赖。通过镜像,可以快速部署和运行应用程序,提供了一种可重复性、可移植性和可扩展性的解决方案。

采用镜像的方式的好处是:

  1. 简化部署:镜像可以快速部署应用程序,无需关心底层系统环境的差异,使得部署变得更加简单和可重复。

  2. 节约资源:镜像利用了资源共享和分层的特性,可以节约存储空间,并提高镜像的下载和分享速度。

  3. 隔离性:每个容器都是基于镜像独立运行的,互相之间无法直接访问,提供了良好的隔离性,保护了应用程序和系统的安全。

   常用的镜像命令包括:

  • docker pull <镜像名称>:拉取镜像到本地。

  • docker images:列出本地所有的镜像。

  • docker rmi <镜像ID>:删除指定的镜像。

  • docker run <镜像名称>:运行指定的镜像。

  • docker tag <镜像ID> <新的镜像名称>:为镜像添加新的标签。

  • docker push <镜像名称>:将本地镜像推送到远程仓库。

  • docker history <镜像名称>:查看镜像的历史记录。

dockerFile

     Dockerfile是Docker的一种文本格式,用于定义如何构建Docker镜像。它包含一系列指令,每条指令对应一个镜像层的构建步骤,从而最终形成一个可执行的镜像。

Dockerfile的执行流程如下:

  1. Docker引擎读取Dockerfile中的指令,并按顺序执行。
  2. 对于每个指令,Docker引擎会创建一个临时容器,在容器中执行指令,然后根据执行结果生成一个新的镜像层。
  3. 当所有的指令都执行完毕后,Docker引擎会将最终的镜像层保存为一个新的镜像。

     Dockerfile关键字:

  1. FROM:指定基础镜像,用作构建当前镜像的起点。 示例:FROM ubuntu:latest

  2. RUN:执行命令行指令。 示例:RUN apt-get update && apt-get install -y curl

  3. COPY:将文件或目录从构建上下文复制到镜像中。 示例:COPY app.py /app/

  4. ADD:类似于COPY,但是还支持URL和解压缩功能。 示例:ADD https://example.com/app.tar.gz /app/

  5. WORKDIR:设置工作目录,后续指令都会在该目录下执行。 示例:WORKDIR /app/

  6. ENV:设置环境变量。 示例:ENV PORT 8080

  7. EXPOSE:声明容器运行时监听的端口。 示例:EXPOSE 80

  8. CMD:容器启动后执行的命令,只能有一个CMD指令。 示例:CMD ["python", "app.py"]

  9. ENTRYPOINT:容器启动后执行的命令,可以与CMD结合使用。 示例:ENTRYPOINT ["python"] CMD ["app.py"]

  10. VOLUME:声明挂载点,用于在容器和主机之间共享数据。 示例:VOLUME /data

数据卷

    数据卷是一种用于持久化存储容器数据的机制。它可以在容器之间共享和重用数据。

    通过挂载数据卷到容器中,容器可以将数据存储在数据卷中,而不是存储在容器的文件系统中。这样可以实现容器的数据持久化,即使容器被删除或重新创建,数据依然可以保留。

数据卷可以用于多种用途,包括:

  1. 数据共享:不同的容器可以共享同一个数据卷,使得它们之间可以共享数据。
  2. 数据持久化:数据卷可以保存容器的数据,即使容器被删除或重新创建,数据仍然存在。
  3. 数据备份和恢复:数据卷可以用于备份和恢复容器中的数据。
  4. 热插拔:可以在容器运行时添加或删除数据卷,而不会对容器本身造成影响。

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

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

相关文章

Python库学习(十四):ORM框架-SQLAlchemy

1.介绍 SQLAlchemy 是一个用于 Python 的 SQL 工具和对象关系映射(ORM)库。它允许开发者通过 Python 代码而不是 SQL查询语言来操作数据库。SQLAlchemy 提供了一种灵活且强大的方式来与关系型数据库交互,支持多种数据库后端,如 P…

【十七】【动态规划】DP41 【模板】01背包、416. 分割等和子集、494. 目标和,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

GeoServer发布地图服务(WMS、WFS)

文章目录 1. 概述2. 矢量数据源3. 栅格数据源 1. 概述 我们知道将GIS数据大致分成矢量数据和栅格数据(地形和三维模型都是兼具矢量和栅格数据的特性)。但是如果用来Web环境中,那么使用图片这个栅格形式的数据载体无疑是最为方便的&#xff0…

WebofScience快速检索文献的办法

Web of Science为什么老是搜不到文章,原来是要在这个地方全部勾选 如果是搜标题的话,选Title,输入你要搜的文章标题 另外,也可以在浏览器直接搜文章标题,得到文章的DOI,然后选DOI,直接搜DOI也行…

中通快递查询,中通快递单号查询,批量删除不需要的快递单号

快递单号的管理现在是许多企业和个人日常工作中不可或缺的一部分,面对堆积如山的快递单号,如何快速、准确地处理成了许多人的难题。今天,我们将为大家带来一款强大的快递单号处理软件——快递批量查询高手,让你从此告别繁琐的手动…

SpringCloud-高级篇(十一)

(1)搭建Redis-主从架构 前面我们实现了Redis的持久化,解决了数据安全问题,但是还有需要解决的问题,下面学习Redis的主从集群,解决Redis的并发能力的问题 Redis的集群往往是主从集群,Redsi为什么…

【leetcode】字符串中的第一个唯一字符

题目描述 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。 用例 示例 1: 输入: s “leetcode” 输出: 0 示例 2: 输入: s “loveleetcode” 输出: 2 示例 3: 输入: s “aabb”…

游戏缺少x3daudio1_7.dll文件怎么办?x3daudio1_7.dll丢失总共有六个解决方法

导语:在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“x3daudio1_7.dll丢失”。那么,x3daudio1_7.dll到底是什么文件呢?它的作用和影响又是什么呢?本文将为您详细介绍x3daudio1_7.dll的相关知…

LabVIEW开发自动光学焊点检测系统

LabVIEW开发自动光学焊点检测系统 LabVIEW于开发了一个自动光学焊点检测系统,旨在提高电子元件焊接的质量和效率。通过利用LabVIEW的高级视觉开发模块,该系统能够准确地识别和分类电路板上的不同焊点类型,如桥接、虚焊、漏焊和多锡。这一进步…

Java最大优先队列设计与实现

Java 学习面试指南:https://javaxiaobear.cn 1、API设计 类名MaxPriorityQueue构造方法MaxPriorityQueue(int capacity):创建容量为capacity的MaxPriorityQueue对象成员方法private boolean less(int i,int j):判断堆中索引i处的元素是否小…

Docker中swarm管理工具

Docker中swarm管理工具 1 安装swarm swarm是Docker自带的容器集群管理工具。 1.1 集群IP 主机名ip地址网卡名软件master192.168.108.201ens33Dockernode1192.168.108.202ens33Docker 修改主机名 # 管理节点,修改主机名 hostnamectl set-hostname master# 子节…

PHP代码审计之实战审代码篇2

4. 仔细观察如下代码&#xff0c;思考代码有什么缺陷&#xff0c;可能由此引发什么样的问题&#xff1f; <?php require_once("/home/rconfig/classes/usersession.class.php"); require_once("/home/rconfig/classes/ADLog.class.php"); require_onc…

【二】使用create-vue创建vue3的helloworld项目(推荐)

create-vue 官网&#xff1a;快速上手 | Vue.js create-vue 是 Vue3 的专用脚手架&#xff0c;使用 vite 创建 Vue3 的项目&#xff0c;也可以选择安装需要的各种插件&#xff0c;使用更简单。 1、使用方式 npm create vuelatest这个命令会安装和执行 create-vue&#xff0…

【MATLAB源码-第105期】基于matlab的4PAM调制解调仿真,输出误码率和误符号曲线并且和理论值对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 4PAM&#xff08;4-Pulse Amplitude Modulation&#xff0c;4脉冲幅度调制&#xff09;是一种数字调制技术&#xff0c;它通过改变载波信号的幅度来表示数据。在4PAM中&#xff0c;载波的幅度可以采用四种不同的水平&#xf…

天翼云搭建AIGC开发环境综合教程

一、英伟达环境安装主要流程 1、下载安装对应系统版本nVidia驱动程序安装验证 2、CUDA开发套件安装验证 3、深度学习框架安装验证MiniConda3PyTorch 4、容器化CUDA环境安装验证 5、cuDNN深度学习优化驱动安装CNN训练验证 6、制作天翼云主机私有镜像 7、分享镜像给其他用…

File-一个IO流中至关重要的类

File类 概述&#xff1a;文件和目录路径名的抽象表示&#xff0c;File 对象就代表一个路径 对与File而言&#xff0c;其封装的并不是一个真正存在的文件&#xff0c;仅仅是一个路径名而已。它可以是存在的&#xff0c;也可以是不存在的。将来要通过具体的操作把这个路径的内容…

xxljob分布式调度平台

分布式调度平台 XXL-JOB 极简入门 https://segmentfault.com/a/1190000041674725xxl-job-core 模块&#xff1a;XXL-JOB 核心。后续我们在编写执行器时&#xff0c;会引入该模块。 xxl-job-admin 模块&#xff1a;调度中心。 xxl-job-executor-samples 模块&#xff1a;提供了…

Python print()函数高级用法和 len()函数详解:获取字符串长度或字节数

Python print()函数高级用法 我们使用 print() 函数时&#xff0c;都只输出了一个变量&#xff0c;但实际上 print() 函数完全可以同时输出多个变量&#xff0c;而且它具有更多丰富的功能。 print() 函数的详细语法格式如下&#xff1a; print (value,...,sep,end\n,filesys.s…

如何使用 Jmeter 进行压力测试?

准备测试计划&#xff1a;在 JMeter 中创建一个新的测试计划&#xff08;Test Plan&#xff09;。添加线程组&#xff1a;在测试计划中添加一个线程组&#xff08;Thread Group&#xff09;&#xff0c;用于模拟并发用户。右键点击测试计划 -> 添加 -> Threads (Users) -…

Turn.js 实现翻书效果

接到了任务&#xff0c;要把孩子画的画放到网页上去&#xff0c;翻页效果还要逼真一点。搜索到了turn.js这个前端翻页组件&#xff0c;效果不错。先上图看效果。 网页实际效果&#xff1a;星月夜诗集 turn.js的官网地址&#xff1a;Turn.js: The page flip effect in HTML5 …