二、部署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 default
    link/ether 02:42:2e:42:6f:44 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

查看docker当前的版本

#验证docker的版本
[root@rhel9 ~]# docker version
Client: Docker Engine - Community
 Version:           27.1.2
 API version:       1.46
 Go version:        go1.21.13
 Git commit:        d01f264
 Built:             Mon Aug 12 11:52:49 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.1.2
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.13
  Git commit:       f9522e5
  Built:            Mon Aug 12 11:51:10 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.20
  GitCommit:        8fc6bcff51318944179630522a095cc9dbf9f353
 runc:
  Version:          1.1.13
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

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

[root@rhel9 ~]# docker info
Client: Docker Engine - Community
 Version:    27.1.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.16.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.29.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 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_type
  Using metacopy: false   
  Native Overlay Diff: true  #是否支持差异数据存储
  userxattr: false
 Logging Driver: json-file  #日志类型
 Cgroup Driver: systemd  #cgroups类型
 Cgroup Version: 2
 Plugins:  #插件
  Volume: local
  Network: bridge host ipvlan macvlan null overlay  
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive  
 Runtimes: io.containerd.runc.v2 runc  #已安装的容器运行时
 Default Runtime: runc #默认使用的容器运行时
 Init Binary: docker-init  #初始化容器的守护进程,即pid为1的进程
 containerd version: 8fc6bcff51318944179630522a095cc9dbf9f353
 runc version: v1.1.13-0-g58aa920
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.14.0-362.8.1.el9_3.x86_64
 Operating System: Red Hat Enterprise Linux 9.3 (Plow)
 OSType: linux
 Architecture: x86_64
 CPUs: 2  #宿主机cpu数量
 Total Memory: 1.692GiB  #宿主机总内存
 Name: rhel9
 ID: 681118d1-e2e3-41a7-b24d-0ae36f8cc338
 Docker Root Dir: /var/lib/docker  #宿主机数据保存目录
 Debug Mode: false
 Experimental: 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 registry
 Registry 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

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

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

相关文章

python + PPT

ppt转化为word 对于PPT中的文本内容&#xff0c;如何转化为word内容呢&#xff1f;下面的代码可以实现如下功能 代码如下&#xff1a; from pptx import Presentation from docx import Documentdef clean_text(text):"""清理文本&#xff0c;移除控制字符&quo…

linux运维命令

防火墙相关命令 防火墙规则查看 firewall-cmd --list-all 禁ping firewall-cmd --permanent --add-rich-rulerule protocol valueicmp drop firewall-cmd --reload 执行完以上命令后&#xff0c;通过firewall-cmd --list-all查看规则生效情况 firewall-cmd --list-all 其…

论文笔记:Asymptotic Midpoint Mixup for Margin Balancing and Moderate Broadening

1. Motivation 在特征空间中&#xff0c;特征之间的collapse会导致representation learning 中的关键问题&#xff0c;这是因为特征之间不可区分。基于线性插值的增强方法&#xff08;例如 mixup&#xff09;已经显示出它们在缓解类间塌陷&#xff08;称为inter-class collaps…

Elasticsearch之索引的增删改查(6.x版本)-yellowcong

1. 节点信息查看 #查看集群健康情况 curl -X GET localhost:9200/_cat/health?v&pretty#查看节点信息 curl -X GET localhost:9200/_cat/nodes?v&pretty 2. 索引管理 在es中&#xff0c;索引就相当于是mysql中的库了。 #查看索引列表 curl -X GET localhost:9200/…

Linux红帽认证有哪些等级?RHCE含金量如何?

工 仲 好&#xff1a;IT运维大本营哈喽&#xff0c;大家好&#xff01; 红帽认证&#xff0c;作为一个备受瞩目的认证体系&#xff0c;其完善程度在行业内有口皆碑。 它清晰地划分为三个等级&#xff0c;分别是初级、中级和高级&#xff0c;每个等级都具有独特的要求和价值。…

ArcGIS求取多个点距离线要素的最近距离以及距离倒数

本文介绍在ArcMap软件中&#xff0c;对于点要素中的每一个点&#xff0c;求取其距离最近的道路的距离、距离倒数的方法。 首先&#xff0c;看一下本文的需求。现在已知一个点要素&#xff0c;其中含有多个点&#xff0c;假设每一个点表示城市中的一家商店&#xff1b;同时&…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用&#xff1b; 实验要求 掌握HBase的基本操作命令和函数接口的使用&#xff1b; 实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者CentOS 7 以上&#xff09;&#xff1b;Hadoop版本&#xff1a;3…

跑一下pyapp

文档&#xff1a;How-to - PyApp 首先没有rust要安装 安装 Rust - Rust 程序设计语言 查看是否安装成功 然后clone下pyapp https://github.com/ofek/pyapp/releases/latest/download/source.zip -OutFile pyapp-source.zip 进入目录中&#xff0c;cmd&#xff0c;设置环境…

Python_Flask01

所有人都不许学Java了&#xff0c;都来学Python&#xff01; 如果不来学的话请网爆我的老师---蔡老师 Flask的前世姻缘 我不知道&#xff0c;没啥用&#xff0c;要学好这个框架&#xff0c;其实多读书&#xff0c;多看报就行了&#xff0c;真心想了解的话&#xff01; Welcom…

Unity性能优化---动态网格组合(一)

网格组合是将 Unity 中的多个对象组合为一个对象的技术。因此&#xff0c;在多物体的场景中&#xff0c;使用网格组合&#xff0c;会有效的减少小网格的数量&#xff0c;最终将得到一个包含许多小网格的大网格游戏对象&#xff0c;这将提高游戏或模拟器的性能。在Unity 的 “St…

Docker 逃逸突破边界

免责声明 本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动&#xff0c;包括但不限于未经授权访问计算机系统、网络或数据。 作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何…

Kafka知识体系

一、认识Kafka 1. kafka适用场景 消息系统&#xff1a;kafka不仅具备传统的系统解耦、流量削峰、缓冲、异步通信、可扩展性、可恢复性等功能&#xff0c;还有其他消息系统难以实现的消息顺序消费及消息回溯功能。 存储系统&#xff1a;kafka把消息持久化到磁盘上&#xff0c…

vue-cli创建项目报错:command failed: npm install --loglevel error

网上解决方法有很多&#xff0c;对于我都没用。 最后用这个方法起了作用&#xff1a; 尝试将npm源设置为HTTP&#xff0c;慎用&#xff0c;可能不安全 npm config set registry http://registry.npm.taobao.org/ 改为http就顺利创建项目了。

STL算法之sort

STL所提供的各式各样算法中&#xff0c;sort()是最复杂最庞大的一个。这个算法接受两个RandomAccessIterators(随机存取迭代器)&#xff0c;然后将区间内的所有元素以渐增方式由小到大重新排列。还有一个版本则是允许用户指定一个仿函数代替operator<作为排序标准。STL的所有…

Spring Shell如何与SpringBoot集成并快速创建命令行界面 (CLI) 应用程序

Spring Shell 介绍 Spring Shell 是一个强大的工具&#xff0c;可用于构建命令行应用程序&#xff0c;提供了简单的方式来创建和管理交互式 CLI。它适合那些希望通过命令行与 Java 应用程序进行交互的开发者&#xff0c;尤其是在需要自动化、交互式输入或与 Spring 生态系统集…

圣桥ERP queryForString.dwr SQL注入漏洞复现

0x01 产品描述: 杭州圣乔科技有限公司主要研发全套工业企业ERP系列软件产品,现在公司已经形成ERP 软件、OA办公管理、等四大系列二十小类软件产品。致力于为政府、教育、医疗卫生、文化事业、公共事业(电、水、气等)、交通、住建、应急、金融、电信运营商、企业等用户提供专…

SystemUI修改状态栏电池图标样式为横屏显示(以Android V为例)

SystemUI修改状态栏电池图标样式为横屏显示(以Android V为例) 1、概述 在15.0的系统rom产品定制化开发中&#xff0c;对于原生系统中SystemUId 状态栏的电池图标是竖着显示的&#xff0c;一般手机的电池图标都是横屏显示的 可以觉得样式挺不错的&#xff0c;所以由于产品开发…

【设计模式系列】备忘录模式(十九)

目录 一、什么是备忘录模式 二、备忘录模式的角色 三、备忘录模式的典型应用场景 四、备忘录模式在Calendar中的应用 一、什么是备忘录模式 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许在不暴露对象内部状态的情况下保存和恢…

简单的动态带特殊符号敏感词校验

简单的动态带特殊符号敏感词校验 敏感词之前进行了简单了解&#xff0c;使用结巴分词自带词库可以实现&#xff0c;具体参考我的如下博文 敏感词校验 此次在此基础进行了部分优化&#xff0c;优化过程本人简单记录一下&#xff0c;具体优化改造步骤如下所示 1.需求 我们公司…

AJAX三、XHR,基本使用,查询参数,数据提交,promise的三种状态,封装-简易axios-获取省份列表 / 获取地区列表 / 注册用户,天气预报

一、XMLHttpRequest基本使用 XMLHttpRequest&#xff08;XHR&#xff09;对象用于与服务器交互。 二、XMLHttpRequest-查询参数 语法: 用 & 符号分隔的键/值对列表 三、XMLHttpRequest-数据提交 核心步骤 : 1. 请求头 设置 Content-Type 2. 请求体 携带 符合要求 的数…