Docker从认识到实践再到底层原理(四-2)|Docker镜像仓库实战案例

news2024/12/23 10:07:35

在这里插入图片描述

前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

  • 高质量博客汇总

然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!

  • Docker从认识到实践再到底层原理

镜像仓库实战练习

实战一:搭建一个Nginx服务

基础知识

有关于Nginx的相关基础知识,可见博客。

  • https://blog.csdn.net/Yu_Cblog/article/details/131777668?spm=1001.2014.3001.5502

找一个合适的Nginx镜像然后拉取下来

直接上dockerhub找,要找一些认证过的,安全漏洞少的。

docker pull nginx:1.24.0

在这里插入图片描述

查看这个镜像的信息

[
    {
        "Id": "sha256:bf09be6b0005cc81d4cc3c3cf836c84450e92a7c4dcb2e2e31d84843ff3d6c62",
        "RepoTags": [
            "nginx:1.24.0"
        ],
        "RepoDigests": [
            "nginx@sha256:a195f9fb6503531660b25f9aeefef1f48bbaf56f46da04bffe1568abb3d3aff6"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-08-16T09:51:35.963457884Z",
        "Container": "21c5e07cc340501c06b6c9c9ddecb109f73df89abb5a9e5b5d0446a93bce5787",
        "ContainerConfig": {
            "Hostname": "21c5e07cc340",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.24.0",
                "NJS_VERSION=0.7.12",
                "PKG_RELEASE=1~bullseye"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"nginx\" \"-g\" \"daemon off;\"]"
            ],
            "Image": "sha256:7dcbca41c4e2332943388468e49bb0dfb817a7968701009888e6de8bfc507448",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "DockerVersion": "20.10.23",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.24.0",
                "NJS_VERSION=0.7.12",
                "PKG_RELEASE=1~bullseye"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Image": "sha256:7dcbca41c4e2332943388468e49bb0dfb817a7968701009888e6de8bfc507448",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 142203809,
        "VirtualSize": 142203809,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/data/var/lib/docker/overlay2/802175726a26b553dd520ef1f37e8ef3119a87313ef7225f5e99ffb536b8734c/diff:/data/var/lib/docker/overlay2/18c96ba08189c46e2ec2d72be86e567ecd1aa6e6015676f99a6b34f8dd987414/diff:/data/var/lib/docker/overlay2/e0f5488f47fe33bc1635d81a05d7e270254f514c5f23bf53a9e4c816465e3655/diff:/data/var/lib/docker/overlay2/fba5c6dd16cfa7554b01cae639acb517f5a2d8150a3ee9fbea84ef542b8276b1/diff:/data/var/lib/docker/overlay2/09ed26d778b566d2df261bfd2e0b2a7e1db9ed9fb1cec5b37a6615842a141464/diff",
                "MergedDir": "/data/var/lib/docker/overlay2/8bddb1b07abd085e515d66c03a4ac356e5e79377eadcccf4aac49efddd7a39ae/merged",
                "UpperDir": "/data/var/lib/docker/overlay2/8bddb1b07abd085e515d66c03a4ac356e5e79377eadcccf4aac49efddd7a39ae/diff",
                "WorkDir": "/data/var/lib/docker/overlay2/8bddb1b07abd085e515d66c03a4ac356e5e79377eadcccf4aac49efddd7a39ae/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:63290f9c9e5201f0507ee1b5701aa06c7f48bef7cce287fc77db92bec634d737",
                "sha256:4c3723958fdba7a3be12c56c73d6f35c5da6ff9f6feecddc0bb6b128900f3dc9",
                "sha256:25f78b8b81b403911798779f4197d78cf49e3064fa093ae6519f1bc2349d3d22",
                "sha256:9cf681134567fd7bf900d01121e321fa9be8e53744fd127e2cea827e49d4888b",
                "sha256:d635f1cc38f9a833d96e67b6044bb054bf1585404bba1022db4bc3e38e7f2922",
                "sha256:451dfbce0e08ae65bc6421917afa07e5c85633ffb278ce66620311739ea415d6"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

通过这些详细信息,我们可以知道启动命令,端口号等信息。

启动这个镜像并修改首页

docker run -p 8080:80 --name myweb1 -h myweb1.com -e myenv=test nginx:1.24.0

对外暴露8080这个端口。

在这里插入图片描述

外面通过8080端口已经可以访问了。

注意:如果使用的是云服务器,要注意开放云服务器的防火墙。

在这里服务端也可以看到访问的日志打印。

在这里插入图片描述

当然,这里是前台运行,如果我们终端终止了,服务就停了。

所以我们要放到后台运行。

带上-d选项后台运行。

docker run -p 8080:80 --name myweb1 -h myweb1.com -e myenv=test -d nginx:1.24.0

在这里插入图片描述

但是这样没有交互,我们改不了首页。所以我们要用交互的方式重新打开。

在这里插入图片描述
在这里插入图片描述

实战二:Docker hub上创建自己私有仓库

基础知识

BusyBox

BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一 些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。 简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也 包含了 Linux 系统的自带的 shell。busybox 是一个集成了一百多个最常用 linux 命令和 工具的软件,他甚至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却 只有区区 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。

下载busybox

wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate

在这里插入图片描述
如图所示,busybox支持非常多的命令。

在这里插入图片描述
在这里插入图片描述

docker hub上创建自己的私有仓库

在这里插入图片描述

在这里插入图片描述

拉取busybox镜像并推送到自己的仓库中

现在其实我们的仓库里面是没有镜像的,所以我们先拉一个busybox镜像到本地先。

docker pull busybox:1.36.0

然后登录。

docker login

打标签。

docker tag busybox:1.36.0 yufcbagpack/busybox-by-yufc:v1.0

push上去。

docker push yufcbagpack/busybox-by-yufc:v1.0

在这里插入图片描述

此时已经上去了。

实战三:腾讯云创建自己的私有仓库

网址:

  • https://cloud.tencent.com/

如何在工作中选取我们需要的基础镜像

我入职了一个公司,开发一个镜像,我怎么选择用哪个作为基础镜像啊?

一般大型公司有自己专门的镜像制作组织,他们会选取对应的系统版本作为基础镜 像,例如华为某部门选取欧拉来制作基础镜像,腾讯选择自己的 TLinux 制作基础镜像, 不会因为出现 CentOS 不维护了无法使用的情况,而且这些镜像一般都会经过严格的 安全扫描,然后作为基础组件提供给各个部门。一般的公司往往也会同意镜像的基础 版本,所以这个选择个人一般不用太多纠结。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Competitive Collaboration 论文阅读

论文信息 题目&#xff1a;Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation 作者&#xff1a;Anurag Ranjan&#xff0c; Varun Jampani&#xff0c; Lukas Balles 来源&#xff1a;CVPR 时间&#x…

考研资料共享系统的设计说明

考研资料共享系统的设计说明 设计意义及目的模块划分技术难点写项目中遇到的问题该项目的后端模块介绍该项目的前端模块介绍运行演示Gitee链接 设计意义及目的 为了方便找资料&#xff0c;了解考研形式&#xff1b;另一方面是锻炼编写系统的能力 模块划分 主要划分为&#xff1…

Oracle VM VirtualBox 安装 Ubuntu Linux

Virtual Box VirtualBox是一个强大的、面向个人用户或者企业用户的虚拟机产品&#xff0c;其支持x86以及AMD64/Intel64的计算架构&#xff0c;功能特性丰富、性能强劲&#xff0c;支持GPL开源协议&#xff0c;其官方网址是www.virtualbox.org&#xff0c;由Oracle开源&#xf…

冠达管理:哪些股票属于大权重?

跟着我国资本商场的开展&#xff0c;股票出资已经成为众多出资者出资的重要选择。在股票商场中&#xff0c;不同的股票权重不一&#xff0c;那么什么是大权重股票?哪些股票归于大权重呢&#xff1f;本文将从多个角度分析&#xff0c;带您了解大权重股票。 一、什么是大权重股…

华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南

目录 引出书接上回&#xff0c;部署spring项目&#xff0c;端口访问失败最后排查结果反馈 尝试的几种解决方案【未成功】1.指定tomcat启动ipv4端口2.添加开放端口规则保存规则防火墙相关命令记录 最终成功解决【成功&#xff01;】用firewall成功了问题来了&#xff0c;如果这里…

HTTP代理只能代理HTTP协议吗?

HTTP代理是一种代理服务器&#xff0c;它可以充当客户端和服务器之间的中介&#xff0c;以帮助客户端访问服务器上的资源。但是&#xff0c;HTTP代理并不仅仅只能代理HTTP协议。 HTTP代理可以代理的协议 除了HTTP协议之外&#xff0c;HTTP代理还可以代理其他协议&#xff0c;例…

服务器数据恢复-EMC存储磁盘损坏的RAID5数据恢复案例

服务器数据恢复环境&#xff1a; 北京某单位有一台EMC某型号存储&#xff0c;有一组由10块STAT硬盘组建的RAID5阵列&#xff0c;另外2块磁盘作为热备盘使用。RAID5阵列上层只划分了一个LUN&#xff0c;分配给SUN小机使用&#xff0c;上层文件系统为ZFS。 服务器故障&#xff1…

windows安装CUDA

windows安装CUDA 说明 适用于你的电脑为nvidia的显卡 第一步 先运行nvcc -V 查看cuda版本&#xff0c;不过应该都是未识别的命令&#xff0c;如下图所示 打开pytorch的官网 https://pytorch.org/get-started/locally/ &#xff0c;查看其支持最新的cuda为多少版本&#xf…

2651. 计算列车到站时间

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;数学 知识回忆除法运算 写在最后 Tag 【数学】 题目来源 2651. 计算列车到站时间 题目解读 给你一个列车预计到达时间点和一个列车延误的时间&#xff0c;请返回列车实际的到达时间。 解题思路 方法一&#xff1a;数…

如何使用Web Storage对页面中数据进行监听?

当使用Web Storage存储的数据发生变化时&#xff0c;会触发Window对象的storage事件&#xff0c;我们可以监听该事件并指定事件处理函数&#xff0c;当其他页面中的localStorage或 sessionStorage中保存的数据发生改变时&#xff0c;就会执行事件处理函数。 监听storage事件的…

Java实现SFTP传输

一、SFTP是什么&#xff1f; SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;安全外壳&#xff09;的安全的文件传输协议&#xff0c;使用SFTP协议可以在文件传输过程中提供一种安全的网络的加密算法&#xff0c;从而保证数据的安全传输 S…

Win11打不开组策略编辑器怎么办

近期有小伙伴反映在使用Win11打开组策略编辑器的时候发现无法打开&#xff0c;这是怎么回事&#xff0c;遇到这种问题应该怎么解决呢&#xff0c;下面小编就给大家详细介绍一下Win11打不开组策略编辑器的解决方法&#xff0c;有需要的小伙伴快来和小编一起看看吧。 Win11打不开…

系统架构设计师-嵌入式系统

目录 一、嵌入式系统概述 1、基本概念 2、嵌入式系统软件组成架构 二、嵌入式软件开发 三、嵌入式硬件 1、嵌入式微处理器 2、人工智能芯片 3、嵌入式微处理器体系结构 4、总线 四、嵌入式操作系统 1、嵌入式实时操作系统 2、操作系统内核架构 3、鸿蒙操作系统 五、嵌入式…

【数据结构-队列】双端队列

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

【多线程】阻塞队列实现原理代码实现

目录 一、概念 二、优势 三、原理&#xff08;代码逐步实现&#xff09; 四、BlockingQueue的使用 一、概念 阻塞队列是一种的特殊的队列&#xff0c;他是带有阻塞的线程安全的队列。当队列已满时入队操作就会进入阻塞&#xff0c;当队列不空时才能执行入队操作&#xff1b…

抓安卓日志命令

临时生成logcat文件 ctrl z 是停止 adb logcat -> /home/log/log.txt 导出全部日志 adb root adb remount 只抓安卓日志 logcat &#xff08;所有保存的日志&#xff0c;中途关机和开机都有&#xff09; adb pull log/android D:\73log\1android 抓全部日志&#x…

《DevOps实践指南》- 读书笔记(四)

DevOps实践指南 Part 3 第一步 &#xff1a;流动的技术实践11. 应用和实践持续集成11.1 小批量开发与大批量合并11.2 应用基于主干的开发实践11.3 小结 12. 自动化和低风险发布12.1 自动化部署流程12.1.1 应用自动化的自助式部署12.1.2 在部署流水线中集成代码部署 12.2 将部署…

从零开始,手把手教你视频直播app源码开发

在今天移动互联网时代&#xff0c;视频直播成为了人们沟通、互动和分享的重要方式。如果你梦想着拥有自己的视频直播应用程序&#xff0c;那么现在是时候开始学习开发视频直播app的源码了&#xff01;本文将带您从零开始&#xff0c;手把手教你如何开发视频直播app源码&#xf…

数据通信网络之IPv6基础

文章及资源归档至公众号【AIShareLab】&#xff0c;回复 通信系统与网络 可获取。 文章目录 一、目的二、环境及网络拓扑三、需求四、步骤及结果分析 一、目的 掌握网络设备静态IPv6 地址配置的方法。掌握IPv6 地址无状态自动配置的应用。掌握通过DHCPv6 部署IPv6 地址配置自动…

inappropriate address 127.0.0.1 for the fudge command, line ignored 时间同步的时候报错

1、安装ntp服务后&#xff0c;启动ntpd正常&#xff0c;但是在查看ntpd服务状态时&#xff0c;有一个红色的报错&#xff0c;报错信息如下&#xff1a; inappropriate address 127.0.0.1 for the fudge command, line ignored 2、解决方法&#xff1a;编辑ntp配置文件&#xf…