Docker安装与仓库使用

日升时奋斗,日落时自省 

目录

1、Docker引擎

2、Docker和虚拟机的区别

3、Docker架构

4、Docker安装

4.1、Ubuntu安装

4.1.1、查看版本需求

4.1.2、卸载历史版本

4.1.3、配置docker下载源

4.1.4、自动启动配置

4.1.5、查看docker版本

4.2、CentOS安装

4.2.1、查看版本需求

4.2.2、卸载旧版本

4.2.3、卸载历史版本

4.2.4、自动启动配置

4.2.5、查看docker版本

5、Docker目录修改

6、镜像仓库工作机制

6.1、镜像仓库使用流程

6.2、实际开发中镜像仓库如何使用

6.3、镜像仓库的拉取机制

7、常用镜像仓库

7.1、Docker Hub功能浏览

7.2、镜像tag查找

 8、镜像仓库命令

8.1、docker login

8.2、docker pull

8.3、docker push

8.4、docker search

8.5、docker logout


注:此博客主要是对docker的认识和使用机制,hub.dockerd的基本使用(没有涉及到命令相关)

Docker它本身不是容器,而是容器的易用工具,容器是 linux 内核中的技术,Docker 只是把这种技术在使用上简易普及了。(简单来说制造镜像,便于我们使用,成本比较小)

1、Docker引擎

Docker 早期是基于 LXC 容器管理引擎实现,当后来成熟之后,Docker 自建了一个容器引擎叫 libcontainer,后来 CNCF 的介入,Docker 又研发了一个工业化标准的容器引擎 runC,目前所使用的新版 Docker,所使用的容器引擎就是 RunC

2、Docker和虚拟机的区别

传统虚拟机Docker容器

磁盘占用

几个GB到几十个GB左右几十MB到几百MB左右

CPU内存占用

虚拟操作系统非常占用CPU和内存,需要通过虚拟层调用占用率高

Docker引擎占用资源极低,直接作用于硬件资源占用少

启动速度(从开机到运行项目)几分钟(从开启容器到运行项目)几秒

安装管理

需要专门的运维技术安装、管理方便

应用部署

手动部署,速度慢体系化部署,可以自动化,速度快

隔离性

系统级别进程级别

封住程度

打包整个操作系统打包项目代码和依赖信息

 Docker为什么比虚拟机资源利用率高,启动快


 

docker 有比虚拟机更少的抽象层,docker 不需要 Hypervisor 实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的是实际物理机的硬件资源,因此在 cpu、内存利用率上 docker 将会在效率上有明显的优势。 docker 利用的是宿主机的内核,而不需要Guest OS,节省了 Guest OS 占用的资源

3、Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建

  • Docker仓库(Registry)

 Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub 供了庞大的镜像集合供使用

  • Docker daemon

Docker daemon 是服务器组件,是 Docker 最核心的后台进程,我们也把它称为守护进程

  • Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信

  • Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器

  • Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板

  • Docker 容器(Container)

容器是独立运行的一个或一组应用

注:创建镜像(Images)前,会先去daemon中找,能找到了直接用,找不到在去仓库里重新下载

4、Docker安装

各大平台支持条件,我们大多数友友 Centos或者Ubuntu的am64的

 Server版本安装

4.1、Ubuntu安装

安装需要依赖

操作系统尽量Ubuntu18或者及以上

4.1.1、查看版本需求

CPU支持APM和X86_64 (可以先查看版本是否能对应上)

查看CPU 

uname -a

查看版本的

cat etc/*release*

4.1.2、卸载历史版本

注:如果没有安装过,不用进行此步骤

卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

卸载历史版本 (删除软件)

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y

删除目录

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

4.1.3、配置docker下载源

sudo apt install curl -y

sudo mkdir -m 0755 -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signedby=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

4.1.4、自动启动配置

配置加载

sudo systemctl daemon-reload

启动服务

sudo systemctl start docker

开启启动

sudo systemctl enable docker

查看服务状态

sudo systemctl status docker

4.1.5、查看docker版本

docker version 

4.2、CentOS安装

支持的操作系统

CentOS7、CentOS8、CentOS9

支持CPU ARM/X86_64

4.2.1、查看版本需求

CPU支持APM和X86_64 (可以先查看版本是否能对应上)

查看CPU 

uname -a

查看版本的

cat etc/*release*

4.2.2、卸载旧版本

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

4.2.3、卸载历史版本

删除机器上的包

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

执行卸载

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

安装utils工具

sudo yum install -y yum-utils

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

4.2.4、自动启动配置

配置加载

sudo systemctl daemon-reload

启动服务

sudo systemctl start docker

开启启动

sudo systemctl enable docker

查看服务状态

sudo systemctl status docker

4.2.5、查看docker版本

docker version 

5、Docker目录修改

注:如果就是为了使用镜像的话,就可以不用这个操作了,只是在公司中为了镜像太多,空间不够用的时候,提前准备好

Docker 默认的安装目录为/var/lib/docker,这里面会存放很多很多镜像,所以我们在安装的时候需要考虑这个目录的空间,有三种解决方案:
(1)将/var/lib/docker 挂载到一个大的磁盘,这种一般我们能控制挂载目录,像腾讯云这种云厂商在安装 K8s 的节点的时候提供了挂载选项,可以直接挂载这个目录过去
(2)安装之前挂载一个大的磁盘,然后创建一个软链接到/var/lib/docker,这样就自动安装到我们空间比较大的磁盘了
(3)安装了 docker,然后发现忘了配置这个目录,我们需要修改 docker 的配置文件

假定我们磁盘的大的目录为/data

mkdir -p /data/var/lib/docker

编辑配置文件

vi /etc/docker/daemon.json

输入下面JSON格式内容

{
"data-root": "/data/var/lib/docker"
}

加载配置

sudo systemctl daemon-reload

重启docker

sudo systemctl restart docker

查看docker状态

sudo systemctl status docker

6、镜像仓库工作机制

6.1、镜像仓库使用流程

玩docker:以后这个地方你会常来的,没有号的友友注册一个

通过docker login 登录仓库(前提是友友你已经注册过账号了)

docker pull 拉取需要的镜像

通过dockerfile或者commit 等方式制作完镜像通过docker push上传到仓库

6.2、实际开发中镜像仓库如何使用

Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上保存,供其他人员使用,例如“部署”到生产环境

开发环境:开发人员使用的一套环境
测试环境:需求开发完成后,发布到供测试人员进行测试的环境
预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布
生产环境:真正面向客户的环境

6.3、镜像仓库的拉取机制

启动容器时, docker daemon 会试图从本地获取相关的镜像;本地镜像不存在时,其将从 Registry 中下载该镜像并保存到本地

7、常用镜像仓库

7.1、Docker Hub功能浏览

注:搜索你需要,为了找合适版本,以及稳定性 (尽量使用较为官方的)

 7.2、镜像tag查找

也可以直接得拉取复制命令即可

 对应版本拉取命令 (对应版本)

镜像的大小,id ,cpu

 

 8、镜像仓库命令

注:主要操作仓库的命令

命令别名功能
docker login登录仓库
docker pulldocker image pull拉取镜像
docker pushdocker image push推送镜像
docker search查找镜像
docker logout登出仓库

8.1、docker login

登录到一个docker镜像仓库,如过未指定镜像仓库地址,默认为官方仓库docker hub

docker login [options] [server]

参数配置:-u :登录用户名 、-p:登录密码

docker login -u 用户名 -p 密码   

注:不输入这两个参数也没事的,输入docker login命令后会提醒你输入用户名和密码

8.2、docker pull

从镜像仓库中拉取或者更新指定镜像

docker pull [options] 镜像名称:[:Tag|@DIGEST]

就tag就是标签  或者是 @ID

docker pull == docker image pull

参数:

-a 拉取所有tagged镜像(一般不需要)

--disable-content-trust:忽略镜像的校验,默认开启

例如:docker pull nginx:1.23.3

8.3、docker push

使用前提使用docker login进行登录后使用

docker push [options] Name[:tag]

tag就是给它打一个标签

docker image push==docker push 

参数:

-a :推送所有tagged镜像

--disable-content-trust:忽略镜像的校验,默认开启

docker push mynginx:v1   (最后这个就是版本)

8.4、docker search

从docker hub查找镜像

docker search [options] TERM

参数:

--no-trunc:显示完整的镜像描述

-f <过滤条件>:列出收藏数不小于指定值的镜像

举个例子:docker search -f star>10 nginx   (友友们可以去试试)

8.5、docker logout

登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker logout 

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

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

相关文章

flutter 五:MaterialApp

MaterialApp const MaterialApp({super.key,this.navigatorKey, //导航键this.scaffoldMessengerKey, //scaffold管理this.home, //首页Map<String, WidgetBuilder> this.routes const <String, WidgetBuilder>{}, //路由this.initialRoute, //初始路由th…

WORD交叉引用参考文献批量转上标

试了好几种方法&#xff0c;只有这个对我奏效

卷积神经网络|导入图片

在学习卷积神经网络时&#xff0c;我们通常使用的就是公开的数据集&#xff0c;这里&#xff0c;我们不使用公开数据集&#xff0c;直接导入自己的图片数据&#xff0c;下面&#xff0c;就简单写个程序实现批量图片的导入。 import osfrom PIL import Imageimport numpy as np…

nginx配置图片服务器

目录 一&#xff1a;访问流程 二&#xff1a;缓存服务器配置 三&#xff1a;上传图片直接上传到图片服务器 四&#xff1a;加快图片访问 一&#xff1a;访问流程 访问缓存服务器(上面安装nginx反向代理到图片服务器&#xff0c;对外提供服务)->图片服务器 二&#xff1…

Windows【工具 05】使用freeSSHd搭建sftp环境(安装+配置+避坑)freeSSHd version 1.3.1安装包网盘分享

使用freeSSHd搭建sftp环境 1.安装2. 使用2.1 开启2.2 配置 3.避坑3.1 端口占用3.2 配置数据无法保存或报没有权限 官方网址已经停止维护&#xff0c;网盘文件 freeSSHd.exe版本为 1.3.1: 链接&#xff1a;https://pan.baidu.com/s/1X-4i9pWGKOsCFEByfPXhig?pwdxp6f 提取码&a…

C# xml序列化和反序列化

问题 有的项目使用webservice返回结果是xml&#xff0c;需要进行xml序列化和反序列化 xml序列化相关特性 C#中&#xff0c;XML序列化相关的特性主要包括&#xff1a; XmlIgnore&#xff1a;这个特性可以用来指示序列化过程忽略一个属性或一个字段。当使用XmlIgnore特性时&a…

Windows PowerShell的安全目标——安全警报

Windows PowerShell的安全目标——安全警报 1. 保证Shell安全 ​ 自从2006年年底PowerShell发布以来&#xff0c;微软在安全和脚本方面并没有取得很好的名声。毕竟那个时候&#xff0c;**VBScript和Windows Script Host(WSH)**是两个最流行的病毒和恶意软件的载体&#xff0c…

3D Gaussian Splatting复现

最近3D Gaussian Splatting很火&#xff0c;网上有很多复现过程&#xff0c;大部分都是在Windows上的。Linux上配置环境会方便简单一点&#xff0c;这里记录一下我在Linux上复现的过程。 Windows下的环境配置和编译&#xff0c;建议看这个up主的视频配置&#xff0c;讲解的很细…

SemCms外贸网站商城系统 SQL注入漏洞复现(CVE-2023-50563)

0x01 产品简介 SemCms是国内团队打造的专门针对外贸网站的开源CMS,主要用于外贸企业,兼容IE,Firefox等主流浏览器。建设商城性质的外贸网站,多语言(小语种)网站。 0x02 漏洞概述 SemCms外贸网站商城系统SEMCMS_Function.php 中的 AID 参数存在SQL注入漏洞,未经身份认…

el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端

最近遇到一个项目,里面有2个需求我觉得挺常见的,第一个需求是一个表单里,当用户在输入名称后,前端调接口发请求获取到关联名称的企业名称,并展示,然后当用户选中企业后,前端调接口获取选中企业的具体信息,并填充到表单里;第二个需求是,表单里有个上传图片的功能,前端…

异常、反射、注解知识点

1. Java 中的异常 是 Java 提供的一种处理程序中错误的机制。 当发生异常时&#xff0c;JVM 会将异常封装成一个异常对象抛出。此对象用来描述异常信息。 当 JVM 遇到程序异常就会自动停止。 2. 异常分类 Throwable&#xff1a;是 Java 异常的根类&#xff0c;Error 和 Exc…

macOS跨进程通信: XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…

JAVA版鸿鹄云商B2B2C:解析多商家入驻直播带货商城系统的实现与应用

一、技术选型 java开发语言&#xff1a;java是一种跨平台的编程语言&#xff0c;适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架&#xff1a;spring boot是一个快速构建spring应用的框架&#xff0c;简化了开发过程&#xf…

Java大数据hadoop2.9.2搭建伪分布式yarn资源管理器

1、修改配置文件 cd /usr/local/hadoop/etc/hadoop cp ./mapred-site.xml.template ./mapred-site.xml vi mapred-site.xml <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> &l…

盲盒、一番赏小程序搭建,打开线上盲盒市场

近几年&#xff0c;我国潮玩市场发展非常迅速&#xff0c;在互联网的影响下&#xff0c;盲盒更是迅速走红网络&#xff0c;深受年轻人的喜欢&#xff0c;各大社交平台上关于盲盒的讨论度也是层出不穷。 一番赏与盲盒的机制都是差不多的&#xff0c;盲盒是在包装一样的盒子中放…

华为 1+X《网络系统建设与运维(初级)》 认证实验上机模拟试题

华为 1X《网络系统建设与运维&#xff08;初级&#xff09;》认证实验上机模拟试题 一、考试背景二、考试说明2.1考试分数说明2.2考试要求2.3考试环境介绍2.4启动考试环境2.5保存答案 三、考试正文3.1考试内容3.1.1任务 1&#xff1a;设备连接3.1.2任务 2&#xff1a;设备命名3…

2024年教资笔试报名开始啦,快看看今年有啥新变化?

2024年教资笔试报名开始啦&#xff0c;网上报名1月12号-1月15号&#xff0c; 网上审核时间&#xff1a;1月12号14&#xff1a;00-1月16号17&#xff1a;00 网上缴费&#xff1a;截止1月17号24&#xff1a;00 准考证打印&#xff1a;3月4-9号 考试时间&#xff1a;3月9号 成…

echarts实现点击不同的柱子实现类目的不同名字

实现效果如下图: 首先实现echarts堆叠柱状图数据为0的不占用x轴空间 option {tooltip: {trigger: axis,axisPointer: {type: shadow},},legend: {},grid: {left: 3%,right: 4%,bottom: 3%,containLabel: true},xAxis: [{type: category,position: bottom,data: [园区内, 园区…

【大数据】分布式协调系统 Zookeeper

分布式协调系统 Zookeeper 1.Zookeeper 的特点2.Zookeeper 的数据结构3.Zookeeper 的应用场景3.1 统一命名服务3.2 统一配置管理3.3 统一集群管理3.4 服务器动态上下线3.5 软负载均衡 Zookeeper 是 Apache 开源的一个顶级项目&#xff0c;目的是为分布式应用提供协调服务&#…