手把手教你入门 Docker

news2024/11/20 1:31:01

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)
💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

在这里插入图片描述

文章目录

  • 1、什么是 Docker
  • 2、Docker 和虚拟化有什么区别
  • 3、Docker 架构
  • 4、Docker 安装
    • **4.1、 卸载旧版本的 Docker(如果有)**:
    • **4.2、 安装 Docker 所需的依赖项**:
    • **4.3、 添加 Docker 的官方 YUM 仓库**:
    • **4.4、安装 Docker**:
    • 4.5、启动 Docker 服务:
    • 4.6、验证 Docker 是否安装成功:
  • 5、仓库配置
    • 5.1、公共仓库配置
    • 5.2、私有仓库配置
  • 6、镜像的查看和拉取
    • 6.1、拉取hello world
    • 6.2、查看镜像
    • 6.3、运行这个镜像

1、什么是 Docker

在这里插入图片描述

Docker 是一种容器化平台,它可以让开发人员和系统管理员轻松地创建、部署和运行应用程序。Docker 可以将应用程序及其依赖项打包成一个独立的容器,该容器可以在任何环境中运行,而不需要修改应用程序或其依赖项。Docker 的目标是帮助开发人员和系统管理员更快、更可靠地构建、部署和运行应用程序。

Docker 的容器化技术可以让开发人员将应用程序及其依赖项打包成一个独立的容器,该容器可以在任何环境中运行。这意味着开发人员可以在开发和测试环境中构建应用程序,然后将其打包成一个容器,然后将其部署到生产环境中,而无需担心环境之间的不兼容性问题。

Docker 还提供了一些工具和服务,可以帮助开发人员和系统管理员更轻松地管理和部署容器化应用程序。这些工具包括 Docker Compose、Docker Swarm 和 Kubernetes 等。这些工具可以帮助开发人员和系统管理员更轻松地管理容器,并自动化容器的部署和管理过程,从而提高生产力和效率。

2、Docker 和虚拟化有什么区别

在这里插入图片描述

Docker 和虚拟机的最大区别在于它们的虚拟化方式不同。虚拟机是一种完全虚拟化技术,它模拟出一套完整的硬件环境,包括 CPU、内存、网络、存储等,然后在这个虚拟的硬件环境中运行操作系统和应用程序。而 Docker 则是一种容器化技术,它在宿主机的操作系统上创建一个隔离的用户空间,然后在这个用户空间中运行应用程序。因此,Docker 比虚拟机更轻量级、更快速、更灵活,可以更高效地利用物理资源。此外,Docker 容器的启动速度也比虚拟机快很多,通常只需要几秒钟即可启动一个容器,而虚拟机则需要数分钟。

Docker 和虚拟化的区别主要有以下几点:

  1. 虚拟化技术不同:虚拟机是一种完全虚拟化技术,它模拟出一套完整的硬件环境,包括 CPU、内存、网络、存储等,然后在这个虚拟的硬件环境中运行操作系统和应用程序。而 Docker 则是一种容器化技术,它在宿主机的操作系统上创建一个隔离的用户空间,然后在这个用户空间中运行应用程序。

  2. 资源占用不同:由于虚拟机需要模拟出一套完整的硬件环境,因此它需要占用更多的资源,包括 CPU、内存、磁盘空间等。而 Docker 则可以共享宿主机的操作系统和硬件资源,因此它的资源占用更少。

  3. 启动速度不同:由于虚拟机需要启动一个完整的操作系统,因此它的启动速度相对较慢,通常需要数分钟。而 Docker 容器的启动速度非常快,通常只需要几秒钟即可启动一个容器。

  4. 部署方式不同:虚拟机需要将整个虚拟硬件环境打包成一个镜像,然后在目标机器上安装虚拟化软件并加载镜像。而 Docker 可以将应用程序及其依赖项打包成一个独立的容器,然后在目标机器上直接运行容器即可。

  5. 隔离性不同:虚拟机是完全隔离的,每个虚拟机都有自己独立的操作系统和硬件环境。而 Docker 容器是在宿主机的操作系统上创建的隔离用户空间,容器之间共享宿主机的内核,因此容器之间的隔离性相对较弱。

3、Docker 架构

在这里插入图片描述
Docker 架构主要由以下几个组件组成:

  1. Docker 客户端:Docker 客户端是用户与 Docker 交互的主要方式,用户可以通过命令行或者图形界面等方式使用 Docker 客户端来执行各种操作。

  2. Docker 服务端:Docker 服务端是 Docker 的主要组成部分,它负责管理 Docker 的各种资源,包括镜像、容器、网络和存储等。Docker 服务端还包括 Docker 引擎,它是 Docker 运行的核心组件,负责创建和管理容器等操作。

  3. Docker 镜像:Docker 镜像是一个只读的模板,它包含了用于创建 Docker 容器的文件系统、应用程序和依赖项等。Docker 镜像可以通过 Dockerfile 文件或者从 Docker Hub 等镜像仓库中获取。

  4. Docker 容器:Docker 容器是 Docker 运行的实例,它基于 Docker 镜像创建,包含了运行应用程序所需的所有文件、配置和依赖项等。Docker 容器是轻量级的,可以快速启动和停止,同时也支持容器之间的数据共享和网络通信等操作。

  5. Docker 仓库:Docker 仓库是用于存储和管理 Docker 镜像的地方,包括公共仓库和私有仓库两种类型。Docker Hub 是 Docker 官方提供的公共仓库,用户可以在其中获取和分享 Docker 镜像。私有仓库则是用户自己搭建的,用于存储和管理自己的 Docker 镜像。

以上是 Docker 架构的主要组件,它们协同工作,为用户提供了一种高效、灵活和可移植的容器化解决方案。

4、Docker 安装

我们这里以 CentOS 为例,基于 CentOS 的操作系统,可以按照以下步骤来安装 Docker:

4.1、 卸载旧版本的 Docker(如果有)

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

在这里插入图片描述

4.2、 安装 Docker 所需的依赖项

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

在这里插入图片描述

4.3、 添加 Docker 的官方 YUM 仓库

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

在这里插入图片描述

4.4、安装 Docker

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

在这里插入图片描述

4.5、启动 Docker 服务:

sudo systemctl start docker

在这里插入图片描述

4.6、验证 Docker 是否安装成功:

sudo docker run hello-world

在这里插入图片描述
以上是在 CentOS 系统下安装 Docker 的步骤和命令

5、仓库配置

Docker 安装好以后,我们就要开始为拉取镜像准备了;国内从 DockerHub 拉取镜像有时会特别慢,此时可以配置镜像加速器。

Docker 仓库配置包括公共仓库和私有仓库两种类型。

5.1、公共仓库配置

Docker 官方提供了公共仓库 Docker Hub,用户可以在其中获取和分享 Docker 镜像。在使用 Docker 时,默认会从 Docker Hub 中获取镜像。

1.Docker 官方和国内很多云服务商都提供了国内加速器服务,比如:阿里云的加速器
https://help.aliyun.com/document_detail/60750.html

2.网易加速器:http://hub-mirror.c.163.com

3.Docker官方中国加速器:https://registry.docker-cn.com

4.ustc 的镜像:https://docker.mirrors.ustc.edu.cn

5.daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

5.2、私有仓库配置

私有仓库则是用户自己搭建的,用于存储和管理自己的 Docker 镜像。私有仓库可以在内网中使用,也可以通过外网访问。搭建私有仓库的步骤如下:

1. 安装 Docker Registry

Docker Registry 是 Docker 官方提供的镜像仓库,可以用来搭建私有仓库。可以通过以下命令来拉取 Docker Registry 镜像:

docker pull registry

2. 运行 Docker Registry 容器

可以通过以下命令来运行 Docker Registry 容器:

docker run -d -p 5000:5000 --name registry registry

其中, -p 5000:5000 表示将容器内部的 5000 端口映射到主机的 5000 端口, --name registry 表示指定容器的名称为 registry。

3. 配置 Docker 客户端

在使用私有仓库时,需要在 Docker 客户端中配置私有仓库的地址。可以通过以下命令来配置:

echo '{"insecure-registries":["<私有仓库地址>:<端口号>"]}' > /etc/docker/daemon.json

其中, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。配置完成后,需要重启 Docker 服务:

systemctl restart docker

4. 推送和拉取镜像

在配置完成后,就可以使用 docker push 命令来推送镜像到私有仓库,使用 docker pull 命令来从私有仓库拉取镜像了。例如:

docker tag <镜像名称> <私有仓库地址>:<端口号>/<镜像名称>
docker push <私有仓库地址>:<端口号>/<镜像名称>
docker pull <私有仓库地址>:<端口号>/<镜像名称>

其中, <镜像名称> 表示要推送或拉取的镜像名称, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。

6、镜像的查看和拉取

6.1、拉取hello world

 docker pull hello-world:latest

在这里插入图片描述

6.2、查看镜像

 docker images

在这里插入图片描述

6.3、运行这个镜像

docker run hello-world

在这里插入图片描述
在这里插入图片描述

💕💕 本文由激流原创,首发于CSDN博客,博客主页 https://blog.csdn.net/qq_37967783?spm=1010.2135.3001.5421
💕💕喜欢的话记得点赞收藏啊

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

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

相关文章

DAY 76 分布式监控平台:zabbix

市场上常用的监控软件&#xff1a; 传统运维&#xff1a;zabbix、 Nagios云原生环境&#xff1a; Prometheus &#xff08;go语言开发的&#xff09; zabbix概述 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去…

国内云服务器全面对比

想要领取优惠券购买云服务可以前往我的云服务器领券购买。 经过疫情三年&#xff0c;大多行业开始复苏&#xff0c;企业开始布局以后得发展&#xff0c;云服务器作为企业发展几乎是必须的&#xff0c;一个企业从无到有&#xff0c;要经历很多&#xff0c;比如企业官网搭建&…

GaussDB云数据库SQL应用系列—索引管理

目录 一、前言 二、注意事项 三、索引创建 1、创建普通索引 2、创建唯一索引 3、创建多字段索引 4、创建部分索引 5、创建表达式索引 四、索引管理 1、查看索引信息 2、删除索引 总结 一、前言 随着互联网的快速发展&#xff0c;数据量呈现爆炸式增长。如何高效地…

PLC现场安装时需要注意的几个关键点

PLC适用于大多数工业现场&#xff0c;但它对使用场合、环境温度等还是有一定要求。控制PLC的工作环境&#xff0c;可以有效地提高它的工作效率和寿命。 在安装PLC时&#xff0c;要避开下列场所&#xff1a; 1.环境温度超过0 ~ 50℃的范围&#xff1b; 2.相对湿度超过85%或者…

Coggle 30 Days of ML 打卡任务二:苹果病害数据加载与数据增强

Coggle 30 Days of ML 打卡任务二&#xff1a;苹果病害数据加载与数据增强 任务二&#xff1a;苹果病害数据加载与数据增强 难度/分值&#xff1a;中/2 打卡内容&#xff1a; 参赛选手名称&#xff1a;AppleDoctor完成日期&#xff1a;2023.6.9任务完成情况&#xff1a; 使…

第四章 完型填空

第四章 完型填空 第一节 真题 2020-完型填空- Section I Use of English Directions&#xff1a; Read the following text. Choose the best word (s) for each numbered blank and mark A, B, C or D on the ANSWER SHEET. (10 points) Being a good parent is, of cour…

Vue中使用editor.md(1):简单使用

0. 背景 在Vue项目中添加一个markdown编辑器&#xff0c;选择使用editor.md&#xff0c;记录在Vue项目中的简单使用。 1. 环境配置 1.1 下载editor.md 官网地址&#xff1a;http://pandao.github.io/editor.md/ 项目文件解压后放入&#xff1a;public/static/内 1.2 下…

【Linux】进程间的通信之共享内存

进程间的通信之共享内存 一、system V 内存共享原理二、共享内存的使用1、ftok函数2、shmget函数3、shmat函数4、shmdt函数5、shmctl函数6、代码使用 三、一些细节的补充 一、system V 内存共享原理 利用内存共享进行进程间的通信的原理其实分为以下几个步骤&#xff1a; 在物…

chatgpt赋能python:Python如何将英文转化为中文的最佳方法

Python如何将英文转化为中文的最佳方法 介绍 在现代全球化社会中&#xff0c;国与国之间的交流越来越频繁&#xff0c;相应的语言翻译工具的需求也愈发迫切。Python是一种易于学习、快速上手的编程语言&#xff0c;适合初学者和经验丰富的程序员使用&#xff0c;在语言翻译方…

技术很牛逼,不会讲PPT,可惜了!

怎样才能做好一场技术分享呢&#xff1f;结合我的经历&#xff0c;做了一些总结。 2015年&#xff0c;我出版《技术管理之巅》以后&#xff0c;先后收到QCon、CSDN、IT168等业界知名技术大会的邀请担任分享嘉宾&#xff0c;几年下来发表了近百场技术及管理相关话题的分享&#…

工业4G路由器 小体积4G LTE通信模块转有线转WiFi充电桩视频安防监控物联网路由器上网CPE

4G LTE代表第四代长期演进&#xff0c;这是一种用于通过蜂窝网络提供高速数据传输的无线通信技术。它是移动网络技术的最新标准&#xff0c;提供比其前身3G更快的数据传输速度。它广泛用于移动设备、物联网设备和机器对机器通信。 近年来&#xff0c;随着物联网技术的快速发展…

探索现代软件架构:揭秘单体、SOA和微服务的进化的之路

1、单体服务、SOA、微服务区别 单体服务 是指一个应用程序中所有的功能都集成在一个单一的代码库中。这种设计模式简单易用&#xff0c;开发人员可以快速地开发和维护应用程序&#xff0c;但是也存在一些问题。例如&#xff0c;当应用程序需要添加新功能时&#xff0c;需要对整…

OpenCV项目开发实战--对图像种的对象进行无缝克隆-附Python、C++的代码实现

文末附基于Python和C++两种方式实现的测试代码下载链接 图 1:无缝克隆示例:一架飞机被克隆到傍晚天空的图片中。 OpenCV 3 中引入的令人兴奋的新功能之一称为无缝克隆。有了这个新功能,您可以从一个图像中复制一个对象,然后将其粘贴到另一个图像中,从而使构图看起来无缝…

FineBI6.0安装部署(最新版)

文章目录 FineBI简介安装步骤场景复现 FineBI简介 FineBI是一款大数据分析的BI工具&#xff0c;同时也是纯B/S架构的商业智能分析服务平台&#xff0c;将其部署到服务器上&#xff0c;就可以通过浏览器进行服务平台的访问和使用。用户在FineBI里面可以进行轻量的数据模型构建&…

Python--常量和变量

Python--常量和变量 <font colorblue>引例<font colorblue>一、常量<font colorblue>二、变量<font colorblue>1.定义<font colorblue>2.变量的赋值<font colorblue>3.变量和变量值的关系<font colorblue>4.标识符、变量名、关键字 …

Golang | Web开发之Gin多服务配置及优雅关闭平滑重启

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; 专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享 “ 花开堪折直须折&#xf…

大数据基础环境与常用软件搭建

大数据基础环境的搭建需要以下步骤&#xff1a; 安装操作系统&#xff1a;大数据环境通常使用Linux操作系统&#xff0c;推荐使用CentOS或Ubuntu。 安装Java环境&#xff1a;大数据软件通常需要Java环境支持&#xff0c;可以安装OpenJDK或Oracle JDK。 安装Hadoop&#xff1a…

【Android开发基础】多线程-Handle消息机制

文章目录 一、引言二、认识1、为什么要用Handle2、原理图3、关键对象&#xff08;1&#xff09;Message&#xff08;消息类&#xff09;&#xff08;2&#xff09;Handler&#xff08;消息机制&#xff09;&#xff08;3&#xff09;MessageQueue&#xff08;消息处理类&#x…

轻量级报表解决方案Telerik Reporting,轻松完成嵌入式报表交互!

开发者可以通过多种方式与集成在应用程序中的Telerik报表进行交互&#xff0c;从“只是阅读它”到更改报表中包含的数据。 但是要注意&#xff1a;开发者所能做的一些事情将取决于报表是如何创建的&#xff0c;以及它是如何嵌入到应用程序UI中的。因此(和任何应用程序一样)&am…

关于数据库SQL优化

简介 在项目上线初期&#xff0c;业务数据量相对较少&#xff0c;SQL的执行效率对程序运行效率的影响可能不太明显&#xff0c;因此开发和运维人员可能无法判断SQL对程序的运行效率有多大。但随着时间的积累&#xff0c;业务数据量的增多&#xff0c;SQL的执行效率对程序的运行…