一文带你入门Docker

news2025/1/13 13:38:36

目录

  • 一、什么是Docker?
    • 1、背景
    • 2、Docker三要素
    • 3、Docker四个组成部分
  • 二、Docker安装步骤
    • 1、VM虚拟机下载
    • 2、centrOS 8下载
    • 3、安装docker
    • 4、配置阿里云镜像加速器
    • 5、docker run 执行顺序
    • 6、docker和虚拟机比较
  • 三、docker常用命令
  • 四、docker镜像分层

一、什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

  • docker官网:https://docs.docker.com/
  • Docker Hub官网: https://hub.docker.com/

1、背景

在docker出现之前,是把java代码打包成jar文件后,上传到测试或者生产环境。但是由于测试或者生产跟本地的开发环境不一致(jdk版本、mysql版本、redis版本等)。就很容易出现在本地能跑起来的项目,一上传到测试就跑不起来了。docker的出现就是为了解决这一问题,使用docker后会将你的代码、运行环境、配置文件、第三方插件等全部打包成一个镜像文件。一次镜像,处处运行,docker仅能在linux上面安装。

2、Docker三要素

  • 仓库

仓库是集中存放镜像的地方,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。世界最大的公开仓库是Docker Hub,国内有阿里云、网易云等。

  • 镜像

是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件

  • 容器

只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。

可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

3、Docker四个组成部分

  • Docker Client客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • Docker Container容器

如下图,Client是客户端,向Docker Daemon守护进程发送一个run命令,守护进程先查询本地有没有该image镜像文件,如果没有就去远程仓库拉取到本地,然后再生成Container容器
在这里插入图片描述

二、Docker安装步骤

1、VM虚拟机下载

VMware17安装包及破解秘钥
链接:https://pan.baidu.com/s/1Dq5-IG8GuhVwgw5y0bfQyA
提取码:7zb0

2、centrOS 8下载

链接:https://pan.baidu.com/s/1k3z41SyqAfPGrtp41Q7R7g
提取码:6b6t

3、安装docker

1、确定使用CentOS7及以上镜像版本

cat /etc/redhat-release

2、卸载旧版本

如果之前有安装过docker,需要先卸载旧版再安装

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

3、yum安装gcc

yum -y install gcc
yum -y install gcc-c++

4、安装stable镜像仓库

yum install -y yum-utils

// 这里使用阿里的,如果从国外的仓库安装会超时

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、更新yum软件包索引

// centos7 命令
yum makecache fast
// centos8 命令
yum makecache

6、安装docker ce

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

7、启动docker

systemctl start docker

8、测试

docker version

// 本地找不到镜像会去仓库拉取,然后生成容器实例

docker run hello-world

9、卸载 docker

systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf/var/lib/containerd

4、配置阿里云镜像加速器

1、找到‘弹性计算’下面的‘容器镜像服务’

在这里插入图片描述

2、创建个人版

在这里插入图片描述

3、点击‘镜像加速器’,选择CentOs找到加速器命令

在这里插入图片描述
4、执行如下命令配置成功

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["使用自己生成的加速器url"]
}
EOF
systemctl daemon-reload
systemctl restart docker

5、docker run 执行顺序

在这里插入图片描述

在这里插入图片描述

6、docker和虚拟机比较

1、虚拟机(Hypervisor)除了在宿主操作系统上运行外,还需要依赖于一个镜像(比如在MVware上面运行虚拟机需要选择一个Centos镜像,这个镜像包括了整个操作系统需要的配置,一般好几个G)。
而docker是直接依赖宿主操作系统。因此在cpu、内存利用率上docker有明显优势
2、新建一个docker实例的时候,不需要像虚拟机一样加载一个操作系统内核,一般虚拟机加载OS是分钟级的,而docker直接利用宿主机OS仅需要几秒钟就能生成一个docker实例

在这里插入图片描述

在这里插入图片描述

三、docker常用命令

docker常用命令请参考另外一篇博客:点击跳转

四、docker镜像分层

1、什么是UnionFS

UnionFS (联合文件系统) : Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtualfilesystem)。 Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像) ,可以制作各种具体的应用镜像。

2、docker镜像加载原理

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFSbootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

rootfs (root file system) ,在bootfs之上。包含的就是典型Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu, Centos等等。

Docker镜像层都是只读的,容器层是可写的·当容器启动时,一个新的可写层被加载到镜像的顶部这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。所有对容器的改动-无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。
在这里插入图片描述

3、镜像分层原理
Docker镜像分层,支持通过扩展现有镜像,创建新的镜像。类似于Java继承于一个Base基础类,自己再按需扩展。
在这里插入图片描述

4、示例

先,创建一个ubuntu实例,并创建一个a.txt文件,用vim命令进入编辑时,提示这个命令不存在。
在这里插入图片描述
然后,执行如下命令,在ubuntu容器上面安装vim

#先更新我们的包管理工具
apt-get update
#然后安装我们需要的
vimapt-get install vim

然后,安装完成后执行vi a.txt,编辑如下后保存退出:wq!
在这里插入图片描述
然后,将容器生成一个新的镜像,该镜像包含该容器所有文件。
语法:docker commit -m="[提交描述]" -a="[作者]" [容器ID] [镜像名]:[版本号]

在这里插入图片描述
最后,在ubuntu上面安装了一个vim生成了一个新的ubuntu。就相当于扩展了基础镜像。

5、镜像分层优点

  • 资源共享
  • 方便复制迁移

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

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

相关文章

运维语言、bash特性、history命令

P4 浅谈运维和编程语言 shell简述 shell C语言开发&#xff0c;和同是C开发的操作系统更兼容。因此shell效率肯定大于其他工具。 shell语言类型 其他运维语言 shell优势 P5 Bash特性 bash是什么 命令历史 -c 清楚存放的历史命令 -r 回复删除的历史命令 &#xff01;历史id…

0基础怎么入门黑客?

" 有一群人大声嚷嚷着自己是黑客&#xff0c;但他们不是。他们&#xff08;主要是正值青春的少年&#xff09;是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客”(cracker)&#xff0c;并不屑与之为伍。多数真正的黑客认为骇客们又懒又不负责任&#x…

FCN学习

简介 FCN是首个端对端的针对像素级别预测的全卷积网络&#xff0c;发表在2015CVPR。全卷积的意思是全连接层全部替换成了卷积层。 FCN的评价指标 FCN的评价指标主要采用Mean IOU&#xff0c;他在当时已经超过了大多数网络的Mean IOU。 全卷积的优势 通过观察我们能够发现&am…

山东大学数字图像处理实验:MATLAB的图像显示方法

文章目录MATLAB 学习实验目的实验原理及方法实验内容MATLAB的图像显示方法实验目的实验内容MATLAB 学习 实验目的 了解 MATLAB 的基本功能及操作方法。掌握典型离散信号的 Matlab 产生和显示。 实验原理及方法 在 MATLAB 中, 序列是用矩阵向量表示, 但它没有包含采样信息, …

程序,进程,线程 并行,并发

程序&#xff1a; 程序的本质是初始的数据加一些指令&#xff0c;是数据跟指令的集合&#xff0c;是有序代码的集 合。程序的指令在代码里面相当于一个函数&#xff0c;调用一个函数相当于向程序发出一条指令&#xff0c;数据就是一些变量&#xff0c;变量就是用来保存数据的。…

ANTLR的IDE——ANTLRWorks2的安装及基本使用

1. ANTLRWorks2的简单介绍 ① ANTLR官网对ANTLRWorks2的介绍 ANTLRWorks 2.此IDE是ANTLR v3 / v4语法以及StringTemplate模板的复杂编辑器。 它可以运行ANTLR工具来生成识别器&#xff0c;并可以运行TestRig&#xff08;在命令行上运行&#xff09;来测试语法。 要将ANTLR生成…

GCC编译器 MinGW的下载安装使用教程

哎 总所周知 gcc可以用来编译C 和C。在linux广泛应用&#xff0c;那么window怎么使用gcc呢。就要用到gcc的window工具----MInGW&#xff0c;安装好之后&#xff0c;直接可以在windows的dos界面编译。下面讲解安装使用过程。1.官网下载MinGW - Minimalist GNU for Windows downl…

家庭消耗品跟踪管理软件HomeLists

什么是 HomeLists &#xff1f; HomeLists 是一款自托管耗材统计软件&#xff0c;能通过提醒等帮助您跟踪家庭消耗品。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 homelists &#xff0c;选择第一个 aceberg/homelists&#xff0c;版本选择 latest。 本文写作时&…

HNU工训中心:直流电路测量分析实验报告

工训中心的牛马实验 实验目的 1.熟悉直流电路的测量和分析方法。 2.熟悉直流电源、电压表、电流表的使用法及其特性。 实验仪器和器材 1.实验仪器 直流稳压电源型号:IT6302 台式多用表型号:UT805A 2.实验&#xff08;箱&#xff09;器材 电路实验箱 元器件&#xff1a;电阻…

Ubuntu/Linux 升级 CMake 版本

Ubuntu/Linux 升级 CMake 版本 背景 在 Ubuntu 18.04 系统上默认的 CMake 版本为 3.10.2&#xff0c;当需要进行一些比较新的项目的编译时&#xff0c;比如说 iceoryx 的交叉编译&#xff0c;会遇到 CMake 版本不支持问题。类似下面的打印&#xff1a; CMake Error at CMakeL…

各种产品图的画法

经常看到网上有人问&#xff0c;产品经理要画哪些图&#xff0c;怎么画流程图等关于画图的问题。确实&#xff0c;画图是产品经理必备的硬核技能。然而&#xff0c;画图又不仅仅是画几个图而已。做产品没有统一、标准的规范指导&#xff0c;容易让人为了画图而画图。甚至&#…

机器学习笔记之狄利克雷过程(一)基本介绍

机器学习笔记之狄利克雷过程——基本介绍引言回顾&#xff1a;高斯混合模型狄利克雷过程——引出引言 从本节开始&#xff0c;将介绍狄利克雷过程。 回顾&#xff1a;高斯混合模型 高斯混合模型(Gaussian Mixture Model,GMM\text{Gaussian Mixture Model,GMM}Gaussian Mixtu…

【吃透Js】深入学习浅拷贝和深拷贝

一、JavaScript数据类型原始类型对象类型二、原始类型和对象类型的区别1.原始类型2.引用类型3.复制4.比较5.值传递三、浅拷贝概念实现方法四、深拷贝概念五、浅拷贝、深拷贝和赋值的区别浅拷贝和赋值六、小结想要真正搞明白深浅拷贝&#xff0c;你必须要熟练掌握赋值、对象在内…

港科夜闻|香港科大与中国医药创新促进会共建创新研究平台,推动大湾区医药创新发展...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大与中国医药创新促进会共建创新研究平台&#xff0c;推动大湾区医药创新发展。香港科技大学与中国医药创新促进会2月27日签署合作备忘录&#xff0c;成立「大湾区生物医药国际创新中心」及「大湾区生物医药发展政策研…

【论文导读】Towards Unsupervised Domain Generalization

之前看到过的一篇论文&#xff0c;挺有意思的&#xff0c;虽然查到了有讲解的博客&#xff0c;但是不太符合我的思考逻辑 于是自己梳理一下。 CVPR 2022丨清华大学提出&#xff1a;无监督域泛化 (UDG)_我爱计算机视觉的博客-CSDN博客 方法引入&#xff1a; 针对现有的处理域…

苹果笔可以不买原装吗?开学必备性价比电容笔

在当今的时代&#xff0c;电容笔日益普及&#xff0c;而且相关的功能也逐渐完善。因此&#xff0c;在使用过程中&#xff0c;怎样挑选一款性价比比较高的电容笔成为大家关心的焦点。随着电容笔的普及&#xff0c;更好更便宜的电容笔成为了一种趋势。那么&#xff0c;哪个品牌的…

[ 云计算入门与实战 - AWS ] 在控制台创建 Amazon EC2 实例

本章节主要介绍在 AWS 控制台窗口 如何创建一台 Amazon EC2 实例。 文章目录写在前面开始创建前进入控制台并启动 EC2 实例服务创建 EC2 实例详细步骤步骤 1&#xff1a;为所要创建的 EC2 实例个体命名步骤 2&#xff1a;选择 AMI步骤 3&#xff1a;选择实例类型步骤 4&#xf…

【线程池的使用规范、线程池的7个参数、4种拒绝策略、线程池的5种状态、线程池的执行流程】

一.线程池的使用规范 阿里巴巴开发手册规定&#xff0c;线程池不允许使用 Executors 去创建&#xff0c;而是通过 ThreadPoolExecutor 的方式&#xff0c;这样的处理方式让开发人员更加明确线程池的运行规则&#xff0c;规避资源耗尽的风险。 说明&#xff1a;Executors 返回的…

EndNote20 自动生成毕业论文参考文献

软件版本&#xff1a; EndNote 20 字体&#xff1a;Chinese Standard GB/T 7714 去谷歌学术下载Endnote格式的enw文件 在EndNote中 File>New… 新建Libaray Tools>Output Styles>Open Style Manager… 勾选Chinese std GBT7714(numeric) Tools>Output Styles>…

CSS背景属性之颜色渐变

颜色渐变 颜色渐变其实在网页设计中并不是特别常见&#xff0c; 但也不可避免的会出现导航栏是渐变色这种情况或者别的不是单一颜色的情况&#xff0c; 例如&#xff1a;这样的设计解决方案并不是只可以使用颜色渐变&#xff0c;我们可以使用两个div拼接&#xff0c;将文字放…