Docker安装与仓库使用

news/2024/7/24 5:09:30 标签: docker

日升时奋斗,日落时自省 

目录

1、Docker引擎

2、Docker和虚拟机的区别

3、Docker架构

4、Docker安装

4.1、Ubuntu安装

4.1.1、查看版本需求

4.1.2、卸载历史版本

docker%E4%B8%8B%E8%BD%BD%E6%BA%90-toc" style="margin-left:80px;">4.1.3、配置docker下载源

4.1.4、自动启动配置

docker%E7%89%88%E6%9C%AC-toc" style="margin-left:80px;">4.1.5、查看docker版本

4.2、CentOS安装

4.2.1、查看版本需求

4.2.2、卸载旧版本

4.2.3、卸载历史版本

4.2.4、自动启动配置

docker%E7%89%88%E6%9C%AC-toc" style="margin-left:80px;">4.2.5、查看docker版本

5、Docker目录修改

6、镜像仓库工作机制

6.1、镜像仓库使用流程

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

6.3、镜像仓库的拉取机制

7、常用镜像仓库

7.1、Docker Hub功能浏览

7.2、镜像tag查找

 8、镜像仓库命令

docker%20login-toc" style="margin-left:40px;">8.1、docker login

docker%20pull-toc" style="margin-left:40px;">8.2、docker pull

docker%20push-toc" style="margin-left:40px;">8.3、docker push

docker%20search-toc" style="margin-left:40px;">8.4、docker search

docker%20logout-toc" style="margin-left:40px;">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

docker%E4%B8%8B%E8%BD%BD%E6%BA%90">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

docker%E7%89%88%E6%9C%AC">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

docker%E7%89%88%E6%9C%AC">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登出仓库

docker%20login">8.1、docker login

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

docker login [options] [server]

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

docker login -u 用户名 -p 密码   

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

docker%20pull">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

docker%20push">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   (最后这个就是版本)

docker%20search">8.4、docker search

docker hub查找镜像

docker search [options] TERM

参数:

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

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

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

docker%20logout">8.5、docker logout

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

docker logout 


http://www.niftyadmin.cn/n/5304270.html

相关文章

chatgpt有什么新奇的玩法吗?

当然可以&#xff0c;让我们来探索一些更具创意和趣味性的案例&#xff1a; 编写代码&#xff1a; 学习语言&#xff1a; 创作故事或诗歌&#xff1a; 角色扮演游戏&#xff1a; 生成图像&#xff1a; 获取实时信息&#xff1a; 学习新知识&#xff1a; 日常问题解…

CompletableFuture超详解与实践

0.背景 一个接口可能需要调用 N 个其他服务的接口&#xff0c;这在项目开发中还是挺常见的。举个例子&#xff1a;用户请求获取订单信息&#xff0c;可能需要调用用户信息、商品详情、物流信息、商品推荐等接口&#xff0c;最后再汇总数据统一返回。 如果是串行&#xff08;按…

excel中解决多行文本自动调整行高后打印预览还是显示不全情况

注意&#xff1a;此方法对于多行合并后单元格行高调整不适用&#xff0c;需要手动调整&#xff0c;如大家有简便方法&#xff0c;欢迎评论。 一、调整表格为自动调整行高 1&#xff09;点击此处全选表格 2&#xff09;在第一行序号单元格的下端&#xff0c;鼠标成黑十字时&am…

iOS UITextField复制、粘贴框显示为英文如何解决

问题描述&#xff1a; 使用UITextField&#xff0c;欲粘贴文本&#xff0c;长按或者双击展示的提示框显示为英文 解决方案&#xff1a; 在Xcode配置文件info,plist文件中&#xff0c;新增Localizas属性&#xff0c;填入Chinese 结果如下&#xff1a; 提示框成功展示为中文

ant design pro 5 企业级后台前端框架自定义根路径设置,解决public文件夹下资源在打包部署后出现找不到的问题

关于ant design pro v5的开箱使用方法见&#xff1a;开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置-CSDN博客 在开发过程中为了方便我们可能会将部分静态资源如logo等放入public文件夹&#xff0c;但在设置站点根路径后&#xff0c;publi…

什么是React.FC | 封装ant design弹框组件之:ant design 修改密码弹框组件

文章目录 一、什么是React.FC组件的 props 是什么意思二、封装ant design弹框组件之:ant design 修改密码弹框组件定义修改密码弹框组件使用修改密码弹框组件:[重要]关于提交时候,不同组件 表单数据共享报错:Button cannot be used as a JSX component.一、什么是React.FC …

React 元素拖拽教程 react-dnd 实现拖拽

React元素拖拽能力教程 h5原生的拖拽处理起来过分的繁琐&#xff0c;而社区已经提供了成熟的库 react-dnd 来帮助我们实现这些细节&#xff0c;我们只需要关心业务逻辑即可。 下面的内容主要是适用于单个元素的拖拽&#xff0c;从一个容器中拖入另外一个容器中&#xff0c;没有…

Flink实时电商数仓之旁路缓存

撤回流的处理 撤回流是指流式处理过程中&#xff0c;两表join过程中的数据是一条一条跑过来的&#xff0c;即原本可以join到一起的数据在刚开始可能并没有join上。 撤回流的格式&#xff1a; 解决方案 定时器&#xff1a;使用定时器定时10s&#xff08;数据最大的时间差值&am…