《OpenShift 4.x HOL教程汇总》

文章目录

  • 创建Repository
  • Push Image
  • Pull Image
  • 更新镜像
  • 回滚镜像
  • 查看并修复漏洞
  • 公有-私有 Repository切换
  • 删除 Repository

说明:在开始本文操作前需根据《 Quay(1) - 用Quay Operator配置Quay环境》准备Quay运行环境。

创建Repository

  1. 登录Quay,在控制台上点击“+”,然后在菜单中选择“New Repository”。
  2. 在“Create New Repository”页面中创建名为hello-php的Repository,并将其设为Public类,最后点击“Create Public Repository”。这样我们就在当前用户(quay)下创建了一个Repository。
    说明:Public代 Repository表所有人都可以不经身份认证就可以进行pull操作(但push操作还需要身份认证);而Private Repository只能是通过身份认证后才可进行pull操作。

Push Image

我们可以使用以下多种方式向Quay上传镜像。本文会使用podman构建镜像,然后再上传至Quay的Repository。

  1. 获得Quay的访问地址。
$ QUAY=$(oc get route quayecosystem-quay -n quay-enterprise -o jsonpath={.spec.host})
  1. 在hello-php目录中创建Dockerfile文件。
$ mkdir $HOME/
$ cd $HOME/hello-php
$ cat << EOF > $HOME/hello-php/Dockerfile1 \
FROM registry.redhat.io/ubi7/php-72:1-25 \
EXPOSE 8000
COPY ./index.php /opt/app-root/src/index.php
CMD /bin/bash -c 'php -S 0.0.0.0:8000'
EOF
  1. 创建容器用到的index.php文件。
cat << EOF > ./index.php
<?php
print "Hello World, from your favorite PHP " . PHP_VERSION . " version!\n";
?>
EOF
  1. 用podman的build命令构建镜像,然后查看本地的镜像。
$ podman build -t hello-php:v0.1 .
STEP 1: FROM registry.access.redhat.com/ubi7/php-72:1-25
Getting image source signatures
Copying blob 7f4603f2fdb7 done
Copying blob b8ac0895426d done
Copying blob 519689a97152 done
Copying blob d853dce25a2e done
Copying blob adb08cdc8943 done
Copying config f89402d6d9 done
Writing manifest to image destination
Storing signatures
STEP 2: EXPOSE 8000
5c09c75a948fea1008ba1a174450d0179338f74627a6c05bf88db2bbe3c7b3c2
STEP 3: COPY ./index.php /opt/app-root/src/index.php
43f70ea80aacde1e797440835845ecc4d6ef0a255407a0f1a74f8883d3efed4f
STEP 4: CMD /bin/bash -c 'php -S 0.0.0.0:8000'
STEP 5: COMMIT hello-php:v0.1
12598f7490ee114bac1c2b36799020ab0a6a4a4cc3f5f6ced433c5cb98eb5432$ podman images
REPOSITORY                                          TAG      IMAGE ID       CREATED              SIZE
localhost/hello-php                                 v0.1     12598f7490ee   About a minute ago   602 MB
registry.access.redhat.com/ubi7/php-72              1-25     f89402d6d9cb   12 months ago        602 MB
  1. 对hello-php镜像重新打标签。
$ podman tag localhost/hello-php:v0.1 ${QUAY}/quay/hello-php:v0.1
  1. 登录Quay,然后推送到Quay中。
$ podman login -u quay -p password ${QUAY} --tls-verify=false
Login Succeeded!
$ podman push ${QUAY}/quay/hello-php:v0.1 --tls-verify=false
Getting image source signatures
Copying blob 6e36fa15a16d done
Copying blob 94704c8acbb7 done
Copying blob a81bc04aca7e done
Copying blob da289ed398e8 done
Copying blob 5eee25e13b93 done
Copying blob 302a24b8cc36 done
Copying config 12598f7490 done
Writing manifest to image destination
Copying config 12598f7490 done
Writing manifest to image destination
Storing signatures
  1. 在Quey中的Repositories中可以看到“quay/hello-php”的Repository,进入后可以在Tags标签页中看到v0.1的镜像Tag。

Pull Image

  1. 为了验证对Public Repository的访问无需登录,可以先退出Quey。
$ podman logout ${QUAY}
Removed login credentials for quayecosystem-quay-quay-enterprise.apps.cluster-beijing-959a.beijing-959a.example.opentlc.com
  1. 删除本地相关镜像。
$ podman rmi localhost/hello-php:v0.1 ${QUAY}/quay/hello-php:v0.1
  1. 从Quay上pull镜像到本地。
$ podman pull ${QUAY}/quay/hello-php:v0.1 --tls-verify=false
Trying to pull quayecosystem-quay-quay-enterprise.apps.cluster-beijing-959a.beijing-959a.example.opentlc.com/quay/hello-php:v0.1...
Getting image source signatures
Copying blob 2206ab0383e8 skipped: already exists
Copying blob 23debac483b0 skipped: already exists
Copying blob 6cb6e4d94045 skipped: already exists
Copying blob 11e9f32eaf6e skipped: already exists
Copying blob f94f448e8c1a skipped: already exists
Copying blob 4d968305006a done
Copying config 12598f7490 done
Writing manifest to image destination
Storing signatures
12598f7490ee114bac1c2b36799020ab0a6a4a4cc3f5f6ced433c5cb98eb5432
  1. 运行pull到本地的镜像。
$ podman run -d -p 8000:8000 ${QUAY}/quay/hello-php:v0.1
22dc5e912e2d5f60e48678b93f49b2d0a7fd9b6b1986c08a49d585b4e72265aa
  1. 访问运行于容器中的应用。
$ curl http://localhost:8000
Hello World, from your favorite PHP 7.2.10 version!
  1. 关闭运行的容器
$ podman stop $(podman ps -q)

更新镜像

  1. 执行命令,更新index.php文件的内容。
$ cat << EOF > $HOME/hello-php/index.php
<?php
print "Hello World, from my favorite PHP " . PP_VERSION . " version!\n";
?>
EOF
  1. 重新build镜像。
$ podman build -t hello-php:v0.1 .
STEP 1: FROM registry.access.redhat.com/ubi7/php-72:1-25
STEP 2: EXPOSE 8000
df32b3b9d363af08bcba85ea61914b9e5efcceb0a4ef5ccc28105dff311c07db
STEP 3: COPY ./index.php /opt/app-root/src/index.php
614ecef4841233979040ab03503230fbce42140020aeef324d14de310a257668
STEP 4: CMD /bin/bash -c 'php -S 0.0.0.0:8000'
STEP 5: COMMIT hello-php:v0.1
fc10a9751abdb7df414413ce71e675270e42c28282b3e2b24b05ad340ac03e55
  1. 更改标签后重新将镜像上传到Quay。
$ podman tag localhost/hello-php:v0.1 ${QUAY}/quay/hello-php:v0.1
$ podman login -u quay -p password ${QUAY} --tls-verify=false
$ podman push ${QUAY}/quay/hello-php:v0.1 --tls-verify=false
  1. 此时可以在Quay的“quay/hello-php”中的History Tags中看到v0.1的Tag变化情况。
  2. 先删除本地镜像,然后在运行更新后的镜像,确认应用已经返回更新后的内容了。
$ podman rmi ${QUAY}/quay/hello-php:v0.1
$ podman pull ${QUAY}/quay/hello-php:v0.1 --tls-verify=false
$ podman run -d -p 8000:8000 ${QUAY}/quay/hello-php:v0.1
51fde445b810a433508fb1a1a6cce021cccd53ec61637c3a55190a8a0e74bc1c
$ curl http://localhost:8000
Hello World, from your favorite PHP 7.2.10 version!
$ podman stop $(podman ps -q)

回滚镜像

  1. 在Quay控制台进入“”quay/hello-php"的Repository。在History Tag中点击"Revert v0.1 to …"链接。
  2. 在弹出窗口中点击Restore Tag按钮。
  3. 此时当前镜像已经回滚到上一次push的镜像了。
  4. 再次将镜像pull到本地,然后运行镜像并测试应用,确认应用再次返回第一次的结果。
$ podman rmi ${QUAY}/quay/hello-php:v0.1
$ podman pull ${QUAY}/quay/hello-php:v0.1 --tls-verify=false
$ podman run -d -p 8000:8000 ${QUAY}/quay/hello-php:v0.1
$ curl http://localhost:8000
Hello World, from your favorite PHP 7.2.10 version!
$ podman stop $(podman ps -q)

查看并修复漏洞

  1. 在Quay控制台进入quay/hello-php的Repository,然后查看“SECURY SCAN”一列的链接。
  2. 在Security San页面中显示了该镜像漏洞数量、严重级别信息、及其其所属Package。
  3. 执行以下命令修改本地Dockerfile文件内容,使用最新的ubi7/php-72镜像。
$ cat << EOF > $HOME/hello-php/Dockerfile
FROM registry.access.redhat.com/ubi7/php-72:latest
EXPOSE 8000
COPY ./index.php /opt/app-root/src/index.php
CMD /bin/bash -c 'php -S 0.0.0.0:8000'
  1. 再次build这个镜像,注意将镜像的Tag改为“v0.2”。
$ podman build -t ${QUAY}/quay/hello-php:v0.2 .
STEP 1: FROM registry.access.redhat.com/ubi7/php-72:latest
Getting image source signatures
Copying blob 9e7a6dc796f0 done
Copying blob e7021e0589e9 done
Copying blob fc5b206e9329 done
Copying blob 3705d1d0bdce done
Copying blob c9ae4966e101 done
Copying config 776a429326 done
Writing manifest to image destination
Storing signatures
STEP 2: EXPOSE 8000
d07d5d1c668db8f0b5e3199fffd23ede34179bbb6d5c76b3860b925bbea14c3c
STEP 3: COPY ./index.php /opt/app-root/src/index.php
7682a8a2e17ee4f6963df145a7065a582c0cbfd143a0872cc68255177d2988a4
STEP 4: CMD /bin/bash -c 'php -S 0.0.0.0:8000'
STEP 5: COMMIT quayecosystem-quay-quay-enterprise.apps.cluster-beijing-959a.beijing-959a.example.opentlc.com/quay/hello-php:v0.2
2b5f49d049b6a086f3ac7ad5498a2701a038c4889be07926899d0a1a2bc46522
  1. 在Quay控制台查看quay/hello-php的Tags,可以看到Tag为v0.2的镜像,进入它的SECURITY SCAN链接。
  2. 确认该镜像只有一个High-level vulnerabilities了。
  3. 查看Usage Logs,查看日志描述。

公有-私有 Repository切换

当Repository创建完后,可以在它的Settings的界面中通过设置“Repository Visibility”为“Make Public”或“Make Private”完成。

删除 Repository

进入Repository的Settings的界面,在下方通过“Delete Repository”删除该Repository。

Quay (2) - 镜像常规操作相关推荐

  1. OpenShift 4 - Fedora CoreOS (5) - CoreOS的常规操作

    <OpenShift 4.x HOL教程汇总> 文章目录 常规操作 查看CoreOS操作系统信息 查看网络配置 修改IP Docker 环境 podman 使用toolbox 什么是too ...

  2. 如何使用Aliyun容器镜像服务对海外gcr、quay仓库镜像进行镜像拉取构建?

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 操作实践 原文地址: 如何使用Aliyun容器镜像服 ...

  3. 图像腌膜Mask的常规操作你真的信手拈来吗?

    点击上方↑↑↑"视学算法"关注我 来源:公众号 行走的机械人 授权 我对图像腌膜的含义一直有些模糊,今天写了几行代码,证明了我这模糊的印象倒是正确的.今天借一个给图片添加水印的小例 ...

  4. 网工的常规操作:配置动态NAT

    网工常规操作:配置动态NAT 实验目的 1. 理解动态NAT的转换原理 2. 掌握动态NAT的配置方法 实验拓扑 实验需求 1. 根据实验拓扑图,完成设备的基本配置: 2. 在R2上创建Loopbac ...

  5. python如何从一个dataframe提取相应的行组成一个新的dataframe_Python|专题(1)——数据处理常规操作集(1)...

    大家好!好久不见!适逢国庆,先祝我亲爱的祖国七十周年生日快乐! 这一系列文章是针对最近在实习中做的一些数据预处理操作的整理.我们希望通过它们,带领大家了解和熟悉一些python做数据清洗,数据整合等的 ...

  6. unix 只有root 可以使用chown吗_chmod 777 是开发的常规操作吗?

    chmod 777 是开发的常规操作吗? 答案很明显:是的 nginx  403 Forbidden 给777权限试下吧? 文件没有写权限 给777权限试下吧? Supervisord 使用root用 ...

  7. docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  8. ubuntu mysql 防火墙_mysql、ubuntu系统防火墙常规操作

    mysql.ubuntu系统防火墙常规操作 编辑:006     时间:2020-02-11 mysql: 数据库操作 连接数据库: mysql -u username -p 创建数据库: creat ...

  9. FTP服务器常规操作

    导读 FTP协议是Internet文件传输的基础,它是由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.下面就由我给大家简单介绍一下 ...

最新文章

  1. Spring 进阶二
  2. torchvision 笔记:ToTensor()
  3. 作了一件超人品的事情,看到的各位都有好运
  4. Swift中文教程(十二) 下标
  5. linux shell脚本判断文件或文件夹是否存在循环操作
  6. python热力相关系数图_【Python可视化6】Seaborn之heatmap热力图
  7. 开源 CMS系统 / SNS系统 / BBS系统
  8. 中国知网 博硕士论文 PDF下载 及书签自动生成
  9. 商用密码产品认证-安全电子门禁系统
  10. xshell上传本地文件命令_linux redhat怎么用xshell上传本地文件
  11. 普通大一学生的自我反思
  12. python读取excel单元格填充色rgb_Python openpyxl读取单元格字体颜色过程解析
  13. AI 智能皮影机器人
  14. 量化交易学习5--获取板块中股票
  15. 将二进制文件或者脚本打包成rpm安装包
  16. JSP判断radio是否选择和传值栗子(测试应聘人员能力自动计算分数)
  17. 谁在影响黄光裕的决策?
  18. Mongodb的可视化工具 Robomongo 的操作使用
  19. centOS 7下Hadoop伪分布式搭建
  20. excel怎么汇总数据?

热门文章

  1. java项目上线mysql查询慢_Java Web应用程序在缓慢的MySQL查询中停滞不前
  2. gnuplot画图命令_Gnuplot科学绘图(二十六)——image 绘图
  3. linux c程序调用脚本,C程序与Lua脚本相互调用
  4. 想要有设计有格调|这波PSD时尚渐变创意海报模板,没跑
  5. 抽象人物主题绘画合集|设计配色高级讲究
  6. 国内人气设计师交流平台集设
  7. 电商促销插画风PSD分层模板,直击底价!吸睛容情!
  8. 超时尚的UI电子商务PSD分层模板,临摹学习必备
  9. matlab怎么设clim,Python Matplotlib.pyplot.clim()用法及代码示例
  10. jquery中如何表达本页网址_如何用js得到当前页面的url信息方法(JS获取当前网址信息)...