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 API
            v
   +--------+----------+
   |   Docker Server   |
   +--------+----------+
            |
            |       Docker Image
            v
   +--------+----------+
   |     Docker         |
   |     Container      |
   +--------+----------+
            |
            |      Docker Networking
            v
   +--------+----------+
   |    Docker Network |
   +--------+----------+
            |
            |      Docker Volumes
            v
   +-------------------+
   |   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. 热插拔:可以在容器运行时添加或删除数据卷,而不会对容器本身造成影响。

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

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

相关文章

嵌入式(六)模数转换ADC | ADC 工作模式 寄存器 轮询和中断方式

文章目录 1 CC2530的ADC模块2 ADC工作模式3 ADC相关寄存器3.1数据寄存器3.2 控制寄存器 4 ADC初始化配置5 ADC使用方式5.1 轮询方式5.2 中断方式 模拟/数字转换 (Analog to Digital Converter,简称ADC) 是将输入的模拟信号转换为数字信号。 各种被测控的物理量&…

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

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

实战Flink Java api消费kafka实时数据落盘HDFS

文章目录 1 需求分析2 实验过程2.1 启动服务程序2.2 启动kafka生产 3 Java API 开发3.1 依赖3.2 代码部分 4 实验验证STEP1STEP2STEP3 5 时间窗口 1 需求分析 在Java api中,使用flink本地模式,消费kafka主题,并直接将数据存入hdfs中。 flin…

VQ-VAE(Neural Discrete Representation Learning)论文解读及实现

pytorch 实现git地址 论文地址:Neural Discrete Representation Learning 1 论文核心知识点 encoder 将图片通过encoder得到图片点表征 如输入shape [32,3,32,32] 通过encoder后输出 [32,64,8,8] (其中64位输出维度) 量化码本 先随机构建一个码本,维度…

三大主要排序方法总结:快速排序,选择排序,冒泡排序

本文介绍:三大排序方法(快速排序,选择排序,冒泡排序)(后续期间可能会发布一篇关于qsort函数的文章) 自我介绍:一个脑子不好的大一学生,c语言接触还没到半年,…

Spring面试篇

Spring面试篇 前置知识ApplicationContextInitializerApplicationListenerBeanFactoryBeanDefinitionBeanFactoryPostProcesssorAwareInitialzingBean,DisposableBeanBeanPostProcessor SpringBoot启动流程IOC容器初始化流程Bean生命周期Bean循环依赖解决 SpringMvc…

Java-IO流-15

文件操作 文件创建 package com.edu.file;import org.junit.jupiter.api.Test;import java.io.File; import java.io.IOException;public class Demo01 {public static void main(String[] args) {}Test//方式1public void create01(){String filePath "D:\\new1.txt&q…

阿里云服务器地域如何选择?

阿里云服务器地域和可用区怎么选择?地域是指云服务器所在物理数据中心的位置,地域选择就近选择,访客距离地域所在城市越近网络延迟越低,速度就越快;可用区是指同一个地域下,网络和电力相互独立的区域&#…

JSP+Servlet 重要知识点 (含面试题)

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。 这里提一句: jsp已经没有深入学习的必要了,除了维护老项目能用上一些,基本属于被淘汰的边缘了。Servlet还是有必要学习一下,比如sp…

Java:Stream流

文章目录 1、体验Stream流2、Stream流的常见生成方式3、Stream流中间操作方法4、Stream流终结操作方法5、Stream流的收集操作6、Stream流综合练习6.1 练习16.2 练习26.3 练习3 以下代码使用JDK11编写。 1、体验Stream流 (1)案例需求 按照下面的要求完成…

如何使用css隐藏掉滚动条

1.解决方案 在滚动元素上再包裹一个父元素,然后,该元素添加如下代码: (注:PC端浏览器滚动条为8px)使元素偏移原来位置8px,目的就是将滚动条区域移动到父元素边框外面,然后&#xff…

AI教我学编程之AI自刀

AI教我学编程系列学习第二课 — C#变量类型 上节回顾知识梳理C#基本变量类型 对话AI分歧产生本段总结 它说得对吗?我随即发问经典AI自刀他来了 总结 上节回顾 在上一节中我们发现,AI工具似乎还不能达到教学的水平,所以在本节中,…

ORA-600 adg无法查询故障

再续前缘 ORA-600[12406]故障解决-CSDN博客 当你点背的时候,看似一个简单的case,总是会迎来反转 上次改完参数没两天,又出现了报错不同,但是现象相似的情况 这次是 ORA-600 [kksgaGetNoAlloc_Int0] 这次出现故障的范围更大&a…

【Spring Boot 源码学习】SpringApplication 的定制化介绍

Spring Boot 源码学习系列 SpringApplication 的定制化介绍 一、引言二、往期内容三、主要内容1. 基础配置1.1 设置关闭 Banner1.2 设置自定义 Banner 打印对象1.3 设置应用程序主入口类1.4 设置用于创建应用程序上下文的工厂1.5 添加 BootstrapRegistry 初始化器实现1.6 设置或…

Python学习之路——函数进阶

目录 一、函数的多返回值 (一)如何操作 (二)代码示例 二、函数的多种传参方式 (一)位置参数 (二)关键字参数 (三)缺省参数 1、定义 2、作用 3、代码示…

Spring之代理模式

1、概念 1.1 介绍 二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中…

互联网分布式应用之SpringCloud

SpringCloud Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. 微服务项目介绍 2. Eure…

C++ goto语句

作用:可以无条件跳转语句,类似计算机组成原理mips指令集中的jump直接跳转指令(汇编语言)。 语法:goto标记; 解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的…

小游戏实战丨基于PyGame的贪吃蛇小游戏

文章目录 写在前面PyGame贪吃蛇注意事项系列文章写在后面 写在前面 本期内容:基于pygame的贪吃蛇小游戏 下载地址:https://download.csdn.net/download/m0_68111267/88700188 实验环境 python3.11及以上pycharmpygame 安装pygame的命令:…

python实现windows内存看门狗程序(带GUI界面)

python实现windows内存看门狗程序(带GUI界面) 效果图 1、程序核心 看门狗程序核心: 1、运行特定程序任务进程 2、监控任务管理器上的内存使用率 3、如果超过阈值则关闭该特定程序进程 4、重新开启该特定程序 5、重复过程2持续监控2、程序流…