借助Docker hub自己手动制作镜像(以Nginx镜像为例)

  • 前言
  • 一、Docker hub是什么?
  • 二、镜像制作步骤
    • 1.进入Docker hub官网,获取源文件
    • 2.制作镜像
    • 3.验证镜像
  • 总结

前言

Docker作为目前主流技术,主要有以下优点:

  • 简化程序:
    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。
  • 节省开支:
    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
  • 多样化:
    Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

在日常使用过程中,如果想获取镜像,通常通过docker search & docker pull即可获取到自己想要的镜像,但有时会出现官方镜像版本过低无法满足自己要求的情况,一方面不放心使用别人打的第三方镜像,一方面自己制作流程过于繁琐容易出问题,此时即可借助Docker hub自己来手动制作一个镜像。


一、Docker hub是什么?

目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 2,650,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

Docker Hub地址:https://hub.docker.com/

二、镜像制作步骤

1.进入Docker hub官网,获取源文件


点击NGINX,进入NGINX介绍页:

这里就是Nginx镜像的介绍页,其中Tags中就是目前Docker hub上所有的Nginx镜像版本,今天我们主要讲如何通过Maintainers来手动制作镜像。


点击the NGINX Docker Maintainers:

进入到Docker hub的官方脚本库了,这里就是本文的主角了:制作Nginx镜像的Dockerfile文件以及所有脚本。


2.制作镜像

将上述Dockerfile文件及脚本全部下载到本地:

注:我这里的DockerfileNginx1231就是Docker hub上的Dockerfile,没有作任何修改。


制作Nginx镜像:

  • 修改DockerfileNginx1231文件,将ENTRYPOINT ["/docker-entrypoint.sh"]改为ENTRYPOINT ["sh", "/docker-entrypoint.sh"],此处不改的话镜像启动时会报错。
  • 制作镜像,docker build -t nginx:1.23.1-0.2 -f DockerfileNginx1231 .
MacBook-Pro-2  ~/temp/nginxImage  docker build -t nginx:1.23.1-0.2 -f DockerfileNginx1231 .
[+] Building 2.3s (11/11) FINISHED=> [internal] load build definition from DockerfileNginx1231                                                                                                                                                   0.4s=> => transferring dockerfile: 46B                                                                                                                                                                             0.0s=> [internal] load .dockerignore                                                                                                                                                                               0.3s=> => transferring context: 2B                                                                                                                                                                                 0.0s=> [internal] load metadata for docker.io/library/alpine:3.16                                                                                                                                                  1.8s=> [1/6] FROM docker.io/library/alpine:3.16@sha256:7580ece7963bfa863801466c0a488f11c86f85d9988051a9f9c68cb27f6b7872                                                                                            0.0s=> [internal] load build context                                                                                                                                                                               0.0s=> => transferring context: 187B                                                                                                                                                                               0.0s=> CACHED [2/6] RUN set -x     && addgroup -g 101 -S nginx     && adduser -S -D -H -u 101 -h /var/cache/nginx -s /sbin/nologin -G nginx -g nginx nginx     && apkArch="$(cat /etc/apk/arch)"     && nginxPack  0.0s=> CACHED [3/6] COPY docker-entrypoint.sh /                                                                                                                                                                    0.0s=> CACHED [4/6] COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d                                                                                                                                      0.0s=> CACHED [5/6] COPY 20-envsubst-on-templates.sh /docker-entrypoint.d                                                                                                                                          0.0s=> CACHED [6/6] COPY 30-tune-worker-processes.sh /docker-entrypoint.d                                                                                                                                          0.0s=> exporting to image                                                                                                                                                                                          0.0s=> => exporting layers                                                                                                                                                                                         0.0s=> => writing image sha256:a684e750ca130ccc802c7235e96753eda7c91a59ade3ec344c2833f2307ff36c                                                                                                                    0.0s=> => naming to docker.io/library/nginx:1.23.1-0.2                                                                                                                                                             0.0sUse 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
  • 查看镜像是否制作成功
MacBook-Pro-2  ~/temp/nginxImage  docker images |grep nginx
nginx                                                 1.23.                                                   a684e750ca13   23 hours ago    23.5MB
nginx                                                 1.23.1                                                  a684e750ca13   23 hours ago    23.5MB
nginx                                                 1.23.1-0.1                                              a684e750ca13   23 hours ago    23.5MB
nginx                                                 1.23.1-0.2                                              a684e750ca13   23 hours ago    23.5MB

3.验证镜像

查看新镜像版本(启动命令略):

MacBook-Pro-2  ~/temp/nginxImage  docker exec -it aeece508702743cecd /bin/sh
/ # nginx -v
nginx version: nginx/1.23.1
/ #

其余功能均验证无误,到此一个新版本的镜像就制作结束了。


总结

以上就是今天要讲的内容,本文简单介绍了如果借助Docker hub的官方脚本及Dockerfile文件来手动制作镜像,Dcoker技术是划时代的,它帮我们简化了很多步骤,欢迎大家讨论交流。

借助Docker hub自己手动制作镜像(以Nginx镜像为例)相关推荐

  1. Docker Hub 最受欢迎的10大镜像

    Docker CEO Ben Golub在2014年的DockerCon上发布Docker Hub,并指出已经有超过14,000个Docker化的应用存储在他们的publc registry中.而根据 ...

  2. dockerfile安装yum_Docker镜像-基于DockerFile制作yum版nginx镜像

    Docker镜像-基于DockerFile制作yum版nginx镜像 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. DockerFile可以说是一种能被Docker程序解释的脚本, ...

  3. dockerfile以alpine为基础镜像构建nginx镜像

    dockerfile以alpine为基础镜像构建nginx镜像 文章目录 dockerfile以alpine为基础镜像构建nginx镜像 1:alpine 2:alpine软件包管理命令 apk ad ...

  4. 详细介绍借助Docker Hub访问gcr.io镜像

    前言 在搭建 Kubernetes 集群时,国内用户遇到的第一个问题就是无法访问 gcr.io 镜像,直接导致无法初始化集群也就没有办法成功搭建 Kubernetes 集群. 通常要解决此问题有几种方 ...

  5. docker hub push_如何制作Docker镜像(image)?

    制作Docker镜像一般有2种方法: 使用hub仓库中已有的环境,安装自己使用的软件环境后完成image创建 通过Dockerfile,完成镜像image的创建 下面通过展示具体操作方法: 第一种:使 ...

  6. centos7 安装英伟达驱动;cuda;docker离线安装;docker gpu离线安装;制作自己的cuda镜像;安装 容器中ssh协议

    原创不易,谢谢! centos7 安装英伟达驱动,cuda,docker安装,docker gpu安装,制作自己的cuda镜像,docker ssh协议 无论是笔记本还是台式电脑,这一步关键 参考资料 ...

  7. Docker仓库管理镜像 -- 公共仓库【Docker Hub】和私人仓库【Registry】和【harbor】

    镜像仓库管理 docker仓库,用来管理镜像.主要分为公共仓库和私人仓库.下面介绍了公共仓库Docker Hub.私人仓库Registry和harbor. DockerHUb仓库管理 什么是Docke ...

  8. docker如何push镜像到docker hub个人的仓库

    docker如何push镜像到docker hub个人的仓库 step1--找到本地镜像的ID:docker imagesstep2--登陆Hub:docker login --username=us ...

  9. .NET Core 2.1 容器镜像将从 Docker Hub 中删除

    .NET Core 2.1 容器镜像将从 Docker Hub 中删除 Richard 2021 年 8 月 16 日 从 8 月 21 日开始,.NET Core 2.1 Docker 容器镜像将不 ...

最新文章

  1. 10大排序算法JAVA源码实现
  2. 企业安全体系建设方案设计(内附案例)
  3. Boost : to_string_stub用法的测试程序
  4. 数据结构题:根据所给权值设计相应的哈夫曼树,并设计哈夫曼编码
  5. “天下第一长联”与“元跨革囊”
  6. 数据库中字段类型Number(n,m)大概说明
  7. android 自动化 录制,android 自动化录制回放测试工具
  8. hdu 1512 Monkey King 左偏树
  9. 多表连接的三种方式 HASH MERGE NESTED
  10. 无盘服务器秒卡 锐起0359,锐起无盘系统问题汇集
  11. 人教版四年级上次计算机教案,人教版四年级上册数学教案
  12. DirectShow 简介
  13. 大学物理公式和名词整理
  14. 机器学习笔记之基础概念
  15. Linux系统学习环境搭建 - 跟小智一起学网络(3)
  16. 普瑞PS8742 Switch V0.9
  17. linux系统的特点有什么
  18. 风投Placeholder的区块链价值观,了解一下
  19. 路边拾遗之其他模块(struct/csv/xlwt/smtp)
  20. reghdfe:多维面板固定效应估计

热门文章

  1. C#语言入门详解1-12
  2. 解决vue中无法取得methods方法中的return值,获得是undefined
  3. 当前服务器系统内核版本是多少,linux下如何查看系统和内核版本
  4. 软件测试工程师简历项目经验怎么写?--1000套软件测试工程师简历
  5. Elasticsearch中安装IK分词器
  6. golang 实现 pdf 转高清晰度 jpeg
  7. 用苹果手机计算机程序二,两台iPhone怎么互传软件 苹果手机互传应用的3个小技巧...
  8. 深度学习之数据处理——如何将图片和标签打乱并划分为训练集和测试集
  9. 简说window操作系统
  10. 命令启动edge浏览器且全屏