容器编排学习(二)镜像制作和私有仓库介绍

这篇具有很好参考价值的文章主要介绍了容器编排学习(二)镜像制作和私有仓库介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 Dockerfile

1  概述

commit的局限

  • 很容易制作简单的镜像,但碰到复杂的情况就十分不方便例如碰到下面的情况
  • 需要设置默认的启动命令
  • 需要设置环境变量
  • 需要指定镜像开放某些特定的端口

Dockerfile就是解决这些问题的方法

Dockerfile是一种更强大的镜像制作方式

编写类似脚本的 Dockerfile 文件,通过该文件制作镜像

2  使用

  • 创建编写 Dockerfile
  • 制作镜像

docker build -t 镜像名称:标签 Dockerfile所在目录

3  指令说明

指令 说明
FROM 指定基础镜像(唯一)
RUN 在容器内执行命令,可以写多条
ADD 把文件拷贝的容器内,如果文件是 tar.xx 格式,会自动解压
COPY 把文件拷贝的容器内,不会自动解压
ENV 设置启动容器的环境变量
WORKDIR 设置启动容器的默认工作目录(唯一)
CMD 容器默认的启动参数(唯一)
ENTRYPOINT 容器默认的启动命令(唯一)
USER 启动容器使用的用户(唯一)
EXPOSE 使用镜像创建的容器默认监听使用的端口号/协议

4  制作 

什么是上帝进程?

简单的说就是系统创建之初产生的第一个进程

特点:

  • 没有父进程,PID == 1l
  • 是所有程序的根进程
  • 上帝进程死亡系统实例也就关闭了

容器有没有上帝进程?

  • 容器的启动进程就是上帝进程
  • 如果容器的启动进程关闭等同于容器关闭

容器的启动进程能否放在后台运行?

  • 后台进程的本质是向系统托管进程服务
  • 容器没有操作系统,所以无法实现进程托管
  • 如果强行把容器的启动进程放后台,将导致容器直接关闭
  • 容器的启动进程必须放在前台运行

5  语法案例

语法案例(1)

# 编写 Dockerfile
[root@docker ~]# mkdir myimg
[root@docker ~]# vim myimg/Dockerfile 
FROM mylinux:latest
CMD  ["/bin/ls", "-l"]
# 创建镜像
[root@docker ~]# docker build -t img1:latest myimg
......
Successfully tagged img1:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
img1         latest    9278f72f8cb1   5 seconds ago   249MB
mylinux      latest    e3b3d26bf0da   21 hours ago    249MB
rockylinux   8.5       210996f98b85   13 months ago   205MB
# 创建容器
[root@docker ~]# docker run -it --rm img1:latest
total 48
lrwxrwxrwx   1 root root    7 Oct 11  2021 bin -> usr/bin
drwxr-xr-x   5 root root  360 Feb  5 04:21 dev
drwxr-xr-x   1 root root 4096 Feb  5 04:21 etc
drwxr-xr-x   2 root root 4096 Oct 11  2021 home
......
# 传递参数命令,覆盖 CMD 执行
[root@docker ~]# docker run -it --rm img1:latest id
uid=0(root) gid=0(root) groups=0(root)

语法案例(2)

ENTRYPOINT一定会执行,CMD 可以通过传递参数覆盖

# ENTRYPOINT 与 CMD 执行方式为 ${ENTRYPOINT} ${CMD}
[root@docker ~]# vim myimg/Dockerfile 
FROM mylinux:latest
ENTRYPOINT ["echo"]
CMD  ["/bin/ls", "-l"]
# 创建镜像
[root@docker ~]# docker build -t img2:latest myimg
......
Successfully tagged img2:latest

# CMD 做为参数传递,在容器内执行了 echo '/bin/ls -l'
[root@docker ~]# docker run -it --rm img2:latest 
/bin/ls -l

# CMD 被替换,在容器内执行了 echo id
[root@docker ~]# docker run -it --rm img2:latest id
id

语法案例(3)

# 制作测试文件
[root@docker ~]# tar -cf myimg/myfile.tar -C /etc hosts issue
# 编辑Dockerfile
[root@docker ~]# vim myimg/Dockerfile 
FROM mylinux:latest
COPY myfile.tar /var/tmp/
ADD  myfile.tar /tmp/
RUN  id && touch /tmp/file1
USER nobody
RUN  id && touch /tmp/file2
ENV  mymsg="Hello World"
WORKDIR /tmp
CMD  ["/bin/bash"]

# 创建镜像
[root@docker ~]# docker build -t img3:latest myimg
......
Successfully built eb8b669cbe7c
Successfully tagged img3:latest

# 运行测试
[root@docker ~]# docker run -it --rm img3:latest
# 使用 COPY 进来的文件还是 tar 包
bash-4.4$ tree /var/tmp
/var/tmp
`-- myfile.tar
# 使用 ADD 添加的文件已经被解压了
bash-4.4$ tree /tmp
/tmp
|-- hosts
`-- issue

# USER 指令设置使用 nobody 用户运行容器
bash-4.4$ id
uid=65534(nobody) gid=65534(nobody) groups=65534(nobody)
# USER 指令前创建的文件是 root 权限,之后是 USER 用户权限
bash-4.4$ ls -l /tmp/file? 
-rw-r--r-- 1 root   root   0 Feb  5 05:25 /tmp/file1
-rw-r--r-- 1 nobody nobody 0 Feb  5 05:25 /tmp/file2

# 环境变量可以直接调用
bash-4.4$ echo ${mymsg}  
Hello World
# WORKDIR 把工作目录设置到 /tmp
bash-4.4$ pwd
/tmp

二  镜像制作实战

1  apache镜像

创建一个可以解析 php 页面的 httpd 镜像

设置默认首页为 Welcome to The Apache

添加php 测试页面info.php

设置默认的工作目录到 /var/www/html

准备配置文件

[root@docker ~]# mkdir httpd
# 设置测试页面
[root@docker ~]# echo 'Welcome to The Apache.' >httpd/index.html
[root@docker ~]# cp -a info.php httpd/
[root@docker ~]# tar czf httpd/myweb.tar.gz -C httpd index.html info.php
# 获取配置文件
[root@docker ~]# docker run -itd --name myweb mylinux:latest
[root@docker ~]# docker exec -it myweb dnf install -y httpd
[root@docker ~]# docker cp myweb:/etc/httpd/conf.modules.d/00-mpm.conf httpd/
[root@docker ~]# docker rm -f myweb
# 修改配置文件
[root@docker ~]# sed -ri -e 's,^Load.*,#&,' -e 's,^#(.*mod_mpm_prefork.so)$,\1,' httpd/00-mpm.conf

制作镜像

# 编写 dockerfile 文件
[root@docker ~]# vim httpd/Dockerfile
FROM mylinux:latest
RUN  dnf install -y httpd php && dnf clean all
ADD  myweb.tar.gz /var/www/html/
COPY 00-mpm.conf /etc/httpd/conf.modules.d/
ENV  LANG=C
WORKDIR /var/www/html/
EXPOSE 80/tcp
CMD  ["/usr/sbin/httpd", "-DFOREGROUND"]

[root@docker ~]# docker build -t httpd:latest httpd
......
Successfully tagged httpd:latest

验证镜像

# 查看镜像并创建容器
[root@docker ~]# docker images httpd:latest
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
httpd        latest    c1e854cde1f4   About a minute ago   299MB
[root@docker ~]# docker run -itd --name myweb httpd:latest
cc2b82ad0367172c344c7207def94c4c438027c60859e94883e440b53a860a93

# 查看容器地址并访问验证
[root@docker ~]# docker inspect myweb |grep -i IPAddress
[root@docker ~]# curl http://172.17.0.2/info.php
<pre>
Array
(
    [REMOTE_ADDR] => 172.17.0.1
    [REQUEST_METHOD] => GET
    [HTTP_USER_AGENT] => curl/7.61.1
    [REQUEST_URI] => /info.php
)
php_host:   2fbc8c132f7f
1229
[root@docker ~]# docker rm -f myweb

2  nginx镜像

在容器内编译 Nginx不方便,我们可以在真机编译 Nginx,然后把编译好的二进制打包部署在容器内

# 安装编译工具和依赖软件包
[root@docker ~]# dnf install -y openssl-devel pcre-devel gcc make 
# 编译安装
[root@docker ~]# tar zxf nginx-1.22.1.tar.gz 
[root@docker ~]# cd nginx-1.22.1/
[root@docker nginx-1.22.1]# ./configure --prefix=/usr/local/nginx --with-pcre --with-http_ssl_module
[root@docker nginx-1.22.1]# make && make install
# 设置默认首页
[root@docker nginx-1.22.1]# echo 'Nginx is running !' >/usr/local/nginx/html/index.html

制作镜像

注意:nginx 服务不能托管在后台运行

[root@docker ~]# mkdir nginx
# 将编译好的 nginx 打包,这里必须使用相对路径
[root@docker ~]# tar czf nginx/nginx.tar.gz -C /usr/local nginx
[root@docker ~]# vim nginx/Dockerfile 
FROM mylinux:latest
RUN  dnf install -y pcre openssl && dnf clean all
ADD  nginx.tar.gz /usr/local/
ENV  PATH=${PATH}:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx/html
EXPOSE 80/tcp
CMD  ["nginx", "-g", "daemon off;"]

[root@docker ~]# docker build -t nginx:latest nginx
Successfully tagged nginx:latest

验证镜像

# 查看镜像并创建容器
[root@docker ~]# docker images nginx:latest
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    645dd2d9a8ec   3 minutes ago   274MB
[root@docker ~]# docker run -itd --name myweb nginx:latest
e440b53a860a93cc2b82ad0367172c344c7207def94c4c438027c60859e94883

# 查看容器地址并访问验证
[root@docker ~]# docker inspect myweb |grep -i IPAddress
[root@docker ~]# curl http://172.17.0.2/
Nginx is running !

# 查看 nginx 服务的用户
# nginx 服务为了提高安全性,在启动之后默认会使用nobody 用户对外提供服务
[root@docker ~]# docker exec -it myweb ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 15:48 pts/0    00:00:00 nginx: master process nginx 
nobody         7       1  0 15:48 pts/0    00:00:00 nginx: worker process
root          32       0  0 15:49 pts/1    00:00:00 ps -ef

[root@docker ~]# docker rm -f myweb

3  php-fpm镜像

按照下面的要求创建php-fpm镜像

  • php-fpm 服务监听地址为 127.0.0.19000
  • php-fpm 使用和 nginx 相同的普通用户运行完成镜像制作,并验证

准备配置文件

获取并修改php-fpm配置文件

使用nobody 用户启动运行 php-fpm 服务

# 获取配置文件
[root@docker ~]# mkdir php
[root@docker ~]# docker run -itd --name myphp mylinux:latest
[root@docker ~]# docker exec -it myphp dnf install -y php-fpm
[root@docker ~]# docker cp myphp:/etc/php-fpm.d/www.conf php/
[root@docker ~]# docker rm -f myphp
# 修改配置文件
[root@docker ~]# sed -ri 's,^(listen = ).*,\1127.0.0.1:9000,' php/www.conf

制作镜像

# 编写 dockerfile 文件
[root@docker ~]# vim php/Dockerfile
FROM mylinux:latest
RUN  dnf install -y php-fpm && dnf clean all && \
     mkdir -p /run/php-fpm /usr/local/nginx/html && \
     chown -R nobody.nobody /run/php-fpm /var/log/php-fpm /usr/local/nginx/html
COPY www.conf /etc/php-fpm.d/www.conf
USER nobody
WORKDIR /usr/local/nginx/html
EXPOSE 9000/tcp
CMD ["/usr/sbin/php-fpm", "--nodaemonize"]

[root@docker ~]# docker build -t php-fpm:latest php
Successfully tagged php-fpm:latest

验证镜像

# 查看镜像并创建容器
[root@docker ~]# docker images php-fpm:latest
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
php-fpm      latest    b2404bd119b0   48 seconds ago   275MB
[root@docker ~]# docker run -itd --name myphp php-fpm:latest
6eeff6af4a6469c298944b2bdd2ba69f32ebcbc6cb683a0a05af4eefbf90e8c1

# 验证服务
[root@docker ~]# docker exec -it myphp /bin/bash
# 验证用户
bash-4.4$ id
uid=65534(nobody) gid=65534(nobody) groups=65534(nobody)
# 我们无法直接调用 php 服务,可以通过查看进程验证服务
bash-4.4$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
nobody         1       0  0 16:13 pts/0    00:00:00 php-fpm: master process (/etc/php-fpm.conf)
nobody         7       1  0 16:13 pts/0    00:00:00 php-fpm: pool www
nobody         8       1  0 16:13 pts/0    00:00:00 php-fpm: pool www
nobody         9       1  0 16:13 pts/0    00:00:00 php-fpm: pool www
nobody        10       1  0 16:13 pts/0    00:00:00 php-fpm: pool www
nobody        11       1  0 16:13 pts/0    00:00:00 php-fpm: pool www
nobody        12       0  0 16:13 pts/1    00:00:00 /bin/bash
nobody        19      12  0 16:13 pts/1    00:00:00 ps -ef
bash-4.4$ exit

[root@docker ~]# docker rm -f myphp

三  docker私有仓库

1  概述

私有仓库是存储 docker image 的仓库

管理了一个 docker 集群,在所有节点维护镜像的一致性是一个非常麻烦繁琐的任务,使用公共仓库,我们又无法控制仓库中的镜像、版本等数据,私有仓库就是解决这些问题的最佳方法。

用户只需要维护私有仓库里面的镜像即可,docker 客户端可以通过私有仓库创建容器服务。

主流仓库有 docker Registry 和 vmware HarborRegistry 提供了仓库的核心功能,包括分层传输机制、WEB接口等功能

Habor 是在 Registry 上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:提供 WEB界面,优化用户体验,支持登陆、搜索功能,区分公有、私有镜像,以及基于角色的访问控制,集成日志审计、支持水平扩展等功能

2  原理

容器编排学习(二)镜像制作和私有仓库介绍,Kubernetes 容器编排学习,学习,linux,运维,服务器,kubernetes,容器

 

3  安装部署

主机清单

主机名 ip地址 最低配置
registry 192.168.1.35 2CPU,4G内存

registry安装部署

# 在 registry 上安装私有仓库
[root@registry ~]# dnf install -y docker-distribution
# 启动私有仓库,并设置开机自启动
[root@registry ~]# systemctl enable --now docker-distribution

4  管理

<1> 概述

仓库配置文件及数据存储路径

  • /etc/docker-distribution/registry/config.yml
  • /var/lib/registry
  • 默认端口号5000

查看私有镜像仓库中的镜像名称或标签

  • 名称: curl http://仓库IP:端口/v2/ catalog
  • 标签: curl http://仓库IP:端口/v2/镜像路径/tags/list

如何让Docker知道私有仓库的地址?

配置文件 /etc/docker/daemon.json

核心参数

镜像仓库地址     [ "registry-mirrors":["http://registry:5000" ]

私有仓库地址     [ "insecure-registries":["registry:5000" ]

<2> 案列

配置私有仓库

上传镜像 nginx到仓库 img 目录下 myimg:web
上传镜像php-fpm到仓库img目录下myimg:php-fpm
上传镜像 httpd 到仓库 library 目录下httpd:latest
上传镜像mylinux到仓库library 目录下mylinux:latest
运行容器

删除所有容器和镜像

分别使用 img/myimg:web 和 library/httpd:latest 创建容器
访问验证

客户端配置

所有node节点都需要配置

[root@docker ~]# vim /etc/hosts
192.168.1.35    registry
# 修改配置文件
[root@docker ~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": ["http://registry:5000"],
    "insecure-registries":["registry:5000"]
}
# 重启服务生效
[root@docker ~]# systemctl restart docker

上传镜像

  • 使用 docker tag 通过标签设置上传地址和路径
  • 使用 docker push 上传镜像
# 给 nginx 镜像设置标签
[root@docker ~]# docker tag  nginx:latest registry:5000/img/myimg:web
# 上传 nginx 镜像
[root@docker ~]# docker push registry:5000/img/myimg:web
The push refers to repository [registry:5000/img/myimg]
c9d01852a13b: Pushed 
......
web: digest: sha256:3e1fc9ad1ee46ee4619c95dc9d71034d919e53abfc size: 952

# 上传 php-fpm 镜像
[root@docker ~]# docker tag  php-fpm:latest registry:5000/img/myimg:php-fpm
[root@docker ~]# docker push registry:5000/img/myimg:php-fpm
The push refers to repository [registry:5000/img/myimg]
619c95dc93e1: Pushed 
......
php-fpm: digest: sha256:619c95dc93e1fc9ad1ee46ee4d71034d919e53abfc size: 875

# 上传 httpd 镜像 
[root@docker ~]# docker tag  httpd:latest registry:5000/library/httpd:latest
[root@docker ~]# docker push registry:5000/library/httpd:latest
The push refers to repository [registry:5000/library/httpd]
95dc9d71034d: Pushed
......
latest: digest: sha256:95dc9d71034d919e53abfc3e1fc9ad1ee46ee4619c size: 968

验证测试

查看镜像名称: curl http://仓库IP:5000/v2/_catalog
查看镜像标签: curl http://仓库IP:5000/v2/镜像路径/tags/list
使用易读格式: python3 -m json.tool

# 查看仓库中所有镜像的名称
[root@docker ~]# curl http://registry:5000/v2/_catalog
{"repositories":["img/myimg", "library/httpd"]}

# 查看某一镜像的所有标签
[root@docker ~]# curl http://registry:5000/v2/img/myimg/tags/list
{"name":"img/myimg","tags":["web", "php-fpm"]}

# 易读格式查看镜像名称
[root@docker ~]# curl -s http://registry:5000/v2/_catalog |python3 -m json.tool
{
    "repositories": [
        "img/myimg",
        "library/httpd"
    ]
}

# 易读格式查看镜像标签
[root@docker ~]# curl -s http://registry:5000/v2/img/myimg/tags/list |python3 -m json.tool
{
    "name": "img/myimg",
    "tags": [
        "php-fpm",
        "web"
    ]
}

 创建容器文章来源地址https://www.toymoban.com/news/detail-704997.html

# 删除所有容器
[root@docker ~]# docker rm -f $(docker ps -aq)
......

# 删除所有镜像
[root@docker ~]# docker rmi $(docker images -q)
......

# 使用仓库中的镜像运行容器
[root@docker ~]# docker run -itd --rm registry:5000/img/myimg:web
2b7cd6d88a7665dbea0a4b3d99478e9f302c0a5661d7676d6d3bd3cb6d181

# library 是默认路径,可以省略路径地址
[root@docker ~]# docker run -itd --rm httpd:latest
634766f788d665dbea0a4b39709e0a2cc8624fd99478e9f302c0a5661d767

到了这里,关于容器编排学习(二)镜像制作和私有仓库介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(85)
  • Docker|kubernetes|本地镜像批量推送到Harbor私有仓库的脚本

    前言: 可能有测试环境,而测试环境下有N多的镜像,需要批量导入到自己搭建的Harbor私有仓库内,一般涉及到批量的操作,自然还是使用脚本比较方便。 本文将介绍如何把某个服务器的本地镜像 推送到带有安全证书的私有Harbor仓库。 一, ###本例中,私有Harbor仓库的地址是

    2024年02月10日
    浏览(53)
  • Docker基础入门:镜像、容器导入导出与私有仓库搭建

    💖The Begin💖点点关注,收藏不迷路💖 1.镜像导入 是复制的过程。 2.容器导入 是将当前容器 变成一个新的镜像。 save 和 export区别: 1)save 保存镜像所有的信息-包含历史信息。 2)export 只导出当前的信息。 首先,两者的操作对象不同。docker save是将一个镜像保存为一个tar包

    2024年02月12日
    浏览(53)
  • 编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

    环境: CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下: (1)基于centos基础镜像; (2)指定作者信息; (3)安装nginx服务,将提供的dest目录(提供默认主页index.html)传到镜像内,并将dest目录内的前端文件复制到nginx的工作目录; (4)暴露80端口; (5)设置服务自启动。 (

    2024年02月11日
    浏览(42)
  • [Docker]二.Docker 镜像,仓库,容器介绍以及详解

    通俗来讲:镜像相当于VM虚拟机中的ios文件,容器相当于虚拟机系统,仓库相当于系统中的进程或者执行文件,容器是通过镜像创建的 Docker 镜像就是一个 Linux 的文件系统( Root FileSystem ),这个文件系统里面包含可以运行在 Linux 内核的程序以及相应的数据,这里要强调一下镜像的两

    2024年02月03日
    浏览(54)
  • docker基于已有容器和通过Dockerfile进行制作镜像配置介绍

    目录 一.制作镜像的两种方式 1.在已有容器中更新并提交这个镜像 2.使用Dockerfile来制作 二.基于容器制作镜像 1.格式 (1)主要格式 (2)可选参数 2.案例 基于容器创建镜像设置标签并进行验证是否可用 (1)运行容器并写入验证内容(改变容器存储层内容) (2)另起终端制

    2024年02月11日
    浏览(57)
  • Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是

    2023年04月12日
    浏览(55)
  • 【容器编排】初识 Kubernetes

    目录 1.简介 2.为什么需要 k8s 3.k8s 能做什么? 4.k8s 不是什么? 1.简介 摘取官网: 概述 | Kubernetes         Kubernetes 这个名字源于希腊语,意为 舵手 或 飞行员 。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模

    2024年02月14日
    浏览(62)
  • 【云原生】Kubernetes容器编排工具

    目录 1. K8S介绍 1.1 k8s的由来 下载地址 1.2 docker编排与k8s编排相比 1.3 传统后端部署与k8s 的对比 传统部署 k8s部署  ​2. k8s的集群架构与组件 (1) Kube-apiserver (2)Kube-controller-manager  (3)Kube-scheduler   2.2 k8s的配置存储中心 2.3  k8s的Node 组件   (1)Kubelet   (2)Kube-Proxy 

    2024年02月10日
    浏览(42)
  • 【云原生】容器编排工具Kubernetes

    目录 一、 K8S介绍 官网地址: 1.1docker编排与k8s编排相比 1.2特性 1.3功能 二、K8S重要组件 2.1核心组件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler (4)Node ①kubelet ②kube-proxy ③docker (5)etcd 2.2Kubernetes工作原理 三、Pod 3.1 Pod控制器 (1)Deployment (2)ReplicaSet (3)

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包