当前位置: 首页 > news >正文

二、部署docker

二、安装与部署

2.1 安装环境概述

Docker划分为CE和EE,CE为社区版(免费,支持周期三个月),EE为企业版(强调安全,付费使用)。

Docker CE每月发布一个Edge版本(17.03,17.04,17.05……),每三个月发布一个Stable版本(17.03,17.06,17.09……);docker EE和stable版本号保持一致,每个版本提供一年维护。

(1)依赖的基础环境

  • 64 位CPU
  • Linux kernel(内核) 3.10+
  • Linux kernel cgroups and namespaces

(2)查询自己服务器的环境

① 使用的操作系统版本

# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.3 (Plow)

② 内核版本

# uname -r
5.14.0-362.8.1.el9_3.x86_64

③ ip地址

# hostname -I

④卸载旧版本,旧版本的Docker称为docker或者docker-engine:

# yum remove docker docker-common docker-selinux docker-engine

2.2 安装docker

docker的安装官方文档:https://docs.docker.com/engine/install/centos/

2.2.1 使用yum安装

(1)添加docker-ce 源信息

安装依赖包(yum-utils 提供了 yum-config-manager):
# yum install yum-utils -y
# yum-config-manager  --add-repo https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo

(2)修改docker-ce源

# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo##或者手动写仓库
# cat docker-ce.repo
[docker-ce]
name=cocker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0

(3)更新源

# yum makecache

(4)安装docker-ce

①默认安装docker-ce是最新版本

#  yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# rpm -q docker-ce
docker-ce-27.1.2-1.el9.x86_64
# systemctl start docker
# systemctl status docker

②安装指定版本

# yum list docker-ce --showduplicates |  sort -r
[root@rhel9 ~]# yum install docker-ce-26.1.4-1.el9 -y
[root@rhel9 ~]# systemctl start docker
[root@rhel9 ~]# systemctl status docker

2.2.2 二进制安装

官方指导文档:https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux

(1)下载二进制文件

二进制文件的下载路径:https://download.docker.com/linux/static/stable/

#此次安装的是docker-25.0.5
[root@rocky9 ~]# mkdir -p /data
[root@rocky9 ~]# wget -P /data/ https://download.docker.com/linux/static/stable/x86_64/docker-25.0.5.tgz
[root@rocky9 ~]# cd /data/
[root@rocky9 data]# tar xf docker-25.0.5.tgz
[root@rocky9 data]# cp docker/*  /usr/bin/
[root@rocky9 data]# dockerd  &

2.3 查看当前docker信息

在docker安装之后,默认会生成一个名称为docker0的网卡并且默认IP地址为172.17.0.1

[root@rhel9 ~]# ip a show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:2e:42:6f:44 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever

查看docker当前的版本

#验证docker的版本
[root@rhel9 ~]# docker version
Client: Docker Engine - CommunityVersion:           27.1.2API version:       1.46Go version:        go1.21.13Git commit:        d01f264Built:             Mon Aug 12 11:52:49 2024OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          27.1.2API version:      1.46 (minimum version 1.24)Go version:       go1.21.13Git commit:       f9522e5Built:            Mon Aug 12 11:51:10 2024OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.7.20GitCommit:        8fc6bcff51318944179630522a095cc9dbf9f353runc:Version:          1.1.13GitCommit:        v1.1.13-0-g58aa920docker-init:Version:          0.19.0GitCommit:        de40ad0

查看当前的容器、镜像、仓库等信息

[root@rhel9 ~]# docker info
Client: Docker Engine - CommunityVersion:    27.1.2Context:    defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version:  v0.16.2Path:     /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version:  v2.29.1Path:     /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 0   #当前主机运行的容器总数Running: 0     #有几个容器是正在运行的Paused: 0     #有几个容器是暂停的Stopped: 0    #有几个容器是停止的Images: 0     #当前主机上的镜像数Server Version: 27.1.2  #服务端版本Storage Driver: overlay2  #正在使用的存储引擎Backing Filesystem: xfs  #后端文件系统,即服务器的磁盘文件系统Supports d_type: true   #是否支持d_typeUsing metacopy: false   Native Overlay Diff: true  #是否支持差异数据存储userxattr: falseLogging Driver: json-file  #日志类型Cgroup Driver: systemd  #cgroups类型Cgroup Version: 2Plugins:  #插件Volume: localNetwork: bridge host ipvlan macvlan null overlay  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslogSwarm: inactive  Runtimes: io.containerd.runc.v2 runc  #已安装的容器运行时Default Runtime: runc #默认使用的容器运行时Init Binary: docker-init  #初始化容器的守护进程,即pid为1的进程containerd version: 8fc6bcff51318944179630522a095cc9dbf9f353runc version: v1.1.13-0-g58aa920init version: de40ad0Security Options:seccompProfile: builtincgroupnsKernel Version: 5.14.0-362.8.1.el9_3.x86_64Operating System: Red Hat Enterprise Linux 9.3 (Plow)OSType: linuxArchitecture: x86_64CPUs: 2  #宿主机cpu数量Total Memory: 1.692GiB  #宿主机总内存Name: rhel9ID: 681118d1-e2e3-41a7-b24d-0ae36f8cc338Docker Root Dir: /var/lib/docker  #宿主机数据保存目录Debug Mode: falseExperimental: false   #是否测试版Insecure Registries:   #非安全的镜像仓库127.0.0.0/8  Live Restore Enabled: false  #是否开启活动重启(重启docker-daemon不关闭容器)

docker的相关进程:

dockerd:被client直接访问,其父进程为宿主机的systemd守护进程。

containerd:被dockerd进程调用以实现与runc交互,containerd可以在宿主机中管理完整的容器生命周期(容器镜像的传输和存储,容器的执行和管理,存储和网络等)。

containerd-shim:containerd套件,其目的主要是隔离containerd和容器。 containerd守护进程收到gRPC调用请求(比如来自Kubelet域或Docker的创建容器请求),便会启动/usr/bin/containerd-shim套件。

containerd-shim-runc-v2: containerd-shim启动后会去启动/usr/bin/containerd-shim-runc-v2,然后立即退出,此时containerd-shim-runc-v2的父进程就变成了systemd(1),这样containerd-shim-runc-v2就和containerd脱离了关系,即便containerd退出也不会影响到容器(这也是containerd-shim套件的作用) 。

runc:OCl标准的具体实现就是runc,真正创建和维护容器便是由runc来完成的。/usr/bin/containerd-shim-runc-v2会启动runc去create、start容器,然后runc立即退出,容器的父进程就变成了containerd-shim-runc-v2。containerd-shim-runc-v2会收集容器进程的状态,上报给containerd

docker-proxy:实现容器通信,其父进程为dockerd

[root@rhel9 ~]# ps -ef | egrep "(docker|containerd)"
root        2080       1  0 09:40 ?        00:00:00 /usr/bin/containerd
root        2088       1  0 09:40 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root        2324    1693  0 09:40 pts/0    00:00:00 grep -E --color=auto (docker|containerd)
[root@rhel9 ~]# pstree -p | egrep "(systemd|docker|containerd)"
systemd(1)-+-ModemManager(846)-+-{ModemManager}(886)|-containerd(2080)-+-{containerd}(2081)|                  |-{containerd}(2082)|                  |-{containerd}(2083)|                  |-{containerd}(2084)|                  |-{containerd}(2085)|                  |-{containerd}(2087)|                  `-{containerd}(2089)|-dockerd(2088)-+-{dockerd}(2090)|               |-{dockerd}(2091)|               |-{dockerd}(2092)|               |-{dockerd}(2093)|               |-{dockerd}(2094)|               |-{dockerd}(2095)|               |-{dockerd}(2096)|               `-{dockerd}(2097)

容器的创建与管理过程:

在这里插入图片描述

1、dockerd通过grpc和containerd模块通信。dockerd和containerd通信的socket文件:/run/containerd/containerd.sock。

2、containerd在dockerd启动时被启动,然后containerd启动grpc请求监听。containerd处理grpc请求,根据请求做相应动作。

3、若是创建容器,containerd拉起一个container-shim容器进程,并进行相应的创建操作。

4、container-shim被拉起后,start/exec/create拉起runc进程,通过exit、control文件和containerd通信,通过父子进程关系和SIGCHLD(信号)监控容器中进程和状态。

2.4 docker镜像加速配置

国内从Docker Hub拉取镜像有时会遇到困难,可以通过修改docker配置文件的方式添加一个加速器,可以通过加速器达到下载镜像的目的。

(1)从2017年6月9日起,Docker 官方提供了在中国的加速器,以解决墙的问题。不用注册,直接使用加速器地址:https://registry.docker-cn.com 即可。

(2)中国科技大学的镜像加速器:中科大的加速器不用注册,直接使用地址 https://docker.mirrors.ustc.edu.cn/ 配置加速器即可。进一步的信息可以访问:http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker

(3)阿里云加速器:注册阿里云开发账户(免费的)后,访问这个链接就可以看到加速器地址: https://cr.console.aliyun.com/#/accelerator

(4)DaoCloud 加速器:注册 DaoCloud 账户(支持微信登录),然后访问: https://www.daocloud.io/mirror#accelerator-doc

#配置docker镜像加速
[root@rhel9 ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.m.daocloud.io","https://huecker.io","https://dockerhub.timeweb.cloud","https://noohub.ru","https://hub.oepkgs.net","https://huecker.io","https://dockerhub.timeweb.cloud" ]
}
[root@rhel9 ~]# systemctl daemon-reload
[root@rhel9 ~]# systemctl restart docker
[root@rhel9 ~]# docker info  | grep -iA 4 registryRegistry Mirrors:https://docker.m.daocloud.io/https://huecker.io/https://dockerhub.timeweb.cloud/https://noohub.ru/
#出现该内容表示镜像加速配置成功
#拉取hello-world镜像,测试能否拉取
[root@rhel9 ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:53cc4d415d839c98be39331c948609b659ed725170ad2ca8eb36951288f81b75
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
[root@rhel9 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    d2c94e258dcb   15 months ago   13.3kB

相关文章:

二、部署docker

二、安装与部署 2.1 安装环境概述 Docker划分为CE和EE&#xff0c;CE为社区版&#xff08;免费&#xff0c;支持周期三个月&#xff09;&#xff0c;EE为企业版&#xff08;强调安全&#xff0c;付费使用&#xff09;。 Docker CE每月发布一个Edge版本&#xff08;17.03&…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十九,ffmpeg封装

封装就是将 一个h264&#xff0c;和一个aac文件重新封装成一个mp4文件。 这里我们的h264 和 aac都是来源于另一个mp4文件&#xff0c;也就是说&#xff0c;我们会将 in.mp4文件解封装成一路videoavstream 和 一路 audioavstream&#xff0c;然后 将这两路的 avstream 合并成一…...

ML 系列:第 39 节 - 估计方法:最大似然估计 (MLE)

目录 一、说明 二、什么是最大似然估计 (MLE)&#xff1f; 2.1 理解公式 2.2 MLE 的定义 2.3 我们何时使用 MLE&#xff1f; 三、结论 一、说明 在统计学领域&#xff0c;我们经常需要根据观察到的数据估计统计模型的参数。为此目的广泛使用的两种关键方法是最大似然估计 ( MLE…...

Linux 权限管理:用户分类、权限解读与常见问题剖析

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 目录 &#x1f4af;L…...

网络原理之 UDP 协议

目录 1. UDP 协议报文格式 2. UDP 的特点 (1) 无连接 (2) 不可靠 (3) 面向数据报 (4) 全双工 3. 基于 UDP 的应用层协议 前文是&#xff1a;UDP 的使用 首先了解一下基础知识&#xff1a; 1. UDP 协议报文格式 传输层最重要的协议有两个&#xff0c;一个是 TCP&#x…...

并发框架disruptor实现生产-消费者模式

Disruptor是LMAX公司开源的高性能内存消息队列&#xff0c;单线程处理能力可达600w订单/秒。本文将使用该框架实现生产-消费者模式。一、框架的maven依赖 <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --><dependency><groupId>com.lmax<…...

【Vivado】xdc约束文件编写

随手记录一下项目中学到的约束文件编写技巧。 时序约束 创建生成时钟 参考链接&#xff1a; Vivado Design Suite Tcl Command Reference Guide (UG835) Vivado Design Suite User Guide: Using Constraints (UG903) 通过Clocking Wizard IP创建的时钟&#xff08;MMCM或…...

Redis使用场景-缓存-缓存雪崩

前言 之前在针对实习面试的博文中讲到Redis在实际开发中的生产问题&#xff0c;其中缓存穿透、击穿、雪崩在面试中问的最频繁&#xff0c;本文加了图解&#xff0c;希望帮助你更直观的了解缓存雪崩&#x1f600; &#xff08;放出之前写的针对实习面试的关于Redis生产问题的博…...

概率论相关知识随记

作为基础知识的补充&#xff0c;随学随记&#xff0c;方便以后查阅。 概率论相关知识随记 期望&#xff08;Expectation&#xff09;期望的定义离散型随机变量的期望示例&#xff1a;掷骰子的期望 连续型随机变量的期望示例&#xff1a;均匀分布的期望 期望的性质线性性质期望的…...

【PlantUML系列】序列图(二)

目录 一、参与者 二、消息交互顺序 三、其他技巧 3.1 改变参与者的顺序 3.2 使用 as 重命名参与者 3.3 注释 3.4 页眉和页脚 一、参与者 使用 participant、actor、boundary、control、entity 和 database 等关键字来定义不同类型的参与者。例如&#xff1a; Actor&…...

WPF+MVVM案例实战与特效(三十四)- 日志管理:使用 log4net 实现高效日志记录

文章目录 1、概述2、日志案例实现1、LogHelper 类详解2、代码解释3、配置文件4、实际应用案例场景 1:记录系统运行日志场景 2:记录数据库操作日志场景 3:记录 HTTP 请求日志5、总结1、概述 在WPF软件开发中,良好的日志记录机制对于系统的调试、维护和性能优化至关重要。lo…...

前端测试框架 jasmine 的使用

最近的项目在使用AngulaJs,对JS代码的测试问题就摆在了面前。通过对比我们选择了 Karma jasmine ,使用 Jasmine做单元测试 &#xff0c;Karma 自动化完成&#xff0c;当然了如果使用 Karma jasmine 前提是必须安装 Nodejs。 安装好 Nodejs &#xff0c;使用 npm 安装好必要…...

Qwen2-VL视觉大模型微调实战:LaTex公式OCR识别任务(完整代码)

《SwanLab机器学习实战教程》是一个主打「开箱即用」的AI训练系列教程&#xff0c;我们致力于提供完善的数据集、源代码、实验记录以及环境安装方式&#xff0c;手把手帮助你跑起训练&#xff0c;解决问题。 Qwen2-VL是通义千问团队最近开源的大语言模型&#xff0c;由阿里云通…...

「Mac玩转仓颉内测版42」小学奥数篇5 - 圆和矩形的面积计算

本篇将通过 Python 和 Cangjie 双语解决简单的几何问题&#xff1a;计算圆的面积和矩形的面积。通过这道题&#xff0c;学生将掌握如何使用公式解决几何问题&#xff0c;并学会用编程实现数学公式。 关键词 小学奥数Python Cangjie几何计算 一、题目描述 编写一个程序&#…...

Groom Blender to UE5

Groom Blender to UE5 - Character & Animation - Epic Developer Community Forums Hello, 你好&#xff0c; While exporting my “groom” from blender to UE5, I notice that the curves have a minimal resolution in Unreal. However I would like to get the same …...

开发一套ERP 第十弹 图片作为配置文件,本地读取图片,定时更新图片类型

echo Hello World在同一数据库中在建一个图床数据表,产品一,一对应,图片命名 最优的方案&#xff0c;使用 rust 在构建一个 http server 用于管理非数据库资源,也可以将来对接不同的图床&#xff0c;部署方便 考虑到数据库资源和图片资源,都可以被远程访问这种方法最佳...

第七十六条:努力保持故障的原子性

当对象抛出异常之后&#xff0c;通常我们期望这个对象仍然保持在一种定义良好的可用状态之中&#xff0c;即使失败是发生在执行某个操作的过程中间。对于受检的异常而言&#xff0c;这尤为重要&#xff0c;因为调用者期望能从这种异常中进行恢复。一般而言&#xff0c;失败的方…...

Word分栏后出现空白页解决方法

Word分栏后出现空白页解决方法 只需要在后面的空白页设置相同的页面布局(分栏格式)&#xff0c;然后按Ctrl backspace即可删除该空白页。 参考文章&#xff1a;Word分栏出现空白怎么解决。...

基于HTML和CSS的校园网页设计与实现

摘要 随着计算机、互联网与通信技术的进步&#xff0c;Internet在人们的学习、工作和生活中的地位也变得越来越高&#xff0c;校园网站已经成为学校与学生&#xff0c;学生与学生之间交流沟通的重要平台&#xff0c;对同学了解学校内发生的各种事情起到了重要的作用。学校网站…...

【算法day7】字符串:反转与替换

题目引用 反转字符串反转字符串II替换数字 1.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&am…...

分布式存储厂商

分布式存储 以下是对分布式存储厂商XSKY星辰天合、IOMesh&#xff08;SmartX&#xff09;、SmartX的深度对比&#xff1a; 1. XSKY星辰天合 产品与服务&#xff1a;XSKY星辰天合提供统一存储平台&#xff0c;支持块、文件和对象存储服务。已为近2400家大型政企机构实施部署&…...

合合信息扫描全能王线下体验活动:科技与人文的完美交融

文章目录 前言签到欢迎仪式产品体验智能高清滤镜去除透字效果照片高清修复 破冰行动会议感受 前言 作为合合信息旗下扫描全能王的忠实粉丝&#xff0c;上周&#xff0c;我很荣幸参与了扫描全能王“扫出你的能量buff”快闪活动及技术交流会。这次活动的不仅让我对这款强大的文档…...

单链表在Go语言中的实现与操作

简介 单链表是一种基本的线性数据结构&#xff0c;由节点组成&#xff0c;每个节点存储数据和指向下一个节点的指针。今天&#xff0c;我们将深入探讨如何在Go语言中实现和操作单链表。 单链表的优缺点 优点&#xff1a; 动态内存分配&#xff0c;灵活性高。插入和删除节点操…...

网关整合sentinel无法读取nacos配置问题分析

sentinel无法读取nacos配置问题分析 1.spring-cloud-gateway整合sentinel2.问题现象3.原因猜测4.源码分析4. 结语 最近公司需要上线一个集约项目&#xff0c;虽然为内网项目&#xff0c;但曾经有过内网被攻破&#xff0c;导致内部系统被攻击的案例&#xff0c;且集约系统同时在…...

简化XPath表达式的方法与实践

XPath表达式用于在XML或HTML文档中定位元素。有时候&#xff0c;XPath表达式可能会变得非常冗长和复杂&#xff0c;这不仅难以阅读和维护&#xff0c;而且也可能影响性能。因此&#xff0c;学会如何简化XPath表达式是非常重要的。本文将介绍几种简化XPath表达式的方法&#xff…...

【文件下载】接口传递文件成功和失败时,前端的处理方式

问题 使用bold类型从后端接口获取文件流&#xff0c;获取成功的时候通过a标签下载&#xff1b;失败的时候&#xff0c;后端返回的是json&#xff0c;这个时候就无法向用户展示后端返回的错误提示信息。 思路 根据返回类型是否为 application/json 区分是否返回成功&#xff…...

html+css网页设计马林旅行社移动端4个页面

htmlcss网页设计马林旅行社移动端4个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…...

视频 的 音频通道提取 以及 视频转URL 的在线工具!

视频 的 音频通道提取 以及 视频转URL 的在线工具&#xff01; 工具地址: https://www.lingyuzhao.top/toolsPage/VideoTo.html 它提供了便捷的方法来处理视频文件&#xff0c;具体来说是帮助用户从视频中提取音频轨道&#xff0c;并将视频转换为可以通过网络访问的URL链接。无…...

容易被遗忘的测试用例

网络服务器启动了吗&#xff1f;应用程序服务器启动了吗&#xff1f;数据库上线了吗&#xff1f;测试数据是否预先加载到数据库中&#xff1f;每当我们准备开始测试应用程序时&#xff0c;一切都应该已经准备妥当。 然而&#xff0c;当测试开始后&#xff0c;我们可能会漏掉一些…...

uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(2)

接uni-app写的微信小程序如何实现账号密码登录后获取token&#xff0c;并且每天的第一次登录后都会直接获取参数而不是耀重新登录&#xff08;1&#xff09;&#xff0c; 在main.js中 import App from ./App// #ifndef VUE3 import Vue from vue import ./uni.promisify.adap…...