了解 Dockerfile 和搭建 Docker 私有仓库:让容器化部署变得更简单

news2024/11/14 5:36:54

目录

1、Dockerfile

1.1什么是Dockerfile

1.2常用命令

1.3使用脚本创建镜像

2、Docker私有仓库

2.1私有仓库介绍:

2.2私有仓库搭建与配置

2.3上传镜像到私有仓库:


1、Dockerfile

1.1什么是Dockerfile

Dockerfile是由一些列命令和参数构成的脚本,这些命令应用于基础镜像并且最终创建一个新的镜像。

  • Dockerfile是用于定义Docker镜像构建过程的文本文件,它包含了一系列的指令和配置,用于指导Docker引擎在基础镜像上构建出一个新的镜像。
  • 通过编写Dockerfile,可以实现自动化、可重复的构建过程,提高容器镜像的可靠性和可维护性。
  • Dockerfile的编写规范和最佳实践可以帮助优化镜像构建过程,减小镜像大小,提高构建速度

对于开发人员:可以为开发团队提供一个完全一致的开发环境;

对于测试人员:可抑直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;

对于运维人员:在部署时,可以实现应用的无缝移植

1.2常用命令

命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条)
RUN command是Dockerfifile的核心部分(可以写多条)
ADD source_dir/fifile dest_dir/fifile将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/fifile dest_dir/fifile和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录

1.3使用脚本创建镜像

创建一个目录(存放tar包,dockerfile位置):

mkdir -p /usr/local/dockerjdk8

这里下载了jdk的tar包并且将tar包移动到dockerjdk8目录下面

编辑Dockerfile文件:

vim Dockerfile

编辑内容:

FROM centos:7 MAINTAINER xxx WORKDIR /usr RUN mkdir /usr/local/java ADD jdk-8u60-linux-x64.tar.gz /usr/local/java ENV JAVA_HOME /usr/local/java/jdk1.8.0_60 ENV PATH $JAVA_HOME/bin:$PATH

解压tar包:

docker build -t='jdk1.8' .

2、Docker私有仓库

2.1私有仓库介绍:

  • Docker私有仓库是用于存储和管理自定义的容器镜像的中心化平台,可以在内部网络中构建、存储和共享镜像。
  • 搭建Docker私有仓库可以提供更快的镜像下载速度、更好的安全性和更好的团队协作体验。
  • Docker私有仓库的管理包括权限控制、备份与恢复、高可用与负载均衡等方面,可以根据实际需求进行配置和优化。

2.2私有仓库搭建与配置

拉取私有仓库镜像:

docker pull registry
Using default tag: latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete 
0d96da54f60b: Pull complete 
5b27040df4a2: Pull complete 
e2ead8259a04: Pull complete 
3790aef225b9: Pull complete 
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest

启动私有仓库容器:

docker run -di --name=registry -p 5000:5000 registry
541b70741fa03693e6d3acdc7da977a2b123fdc66f6123aeb1fd37f24b130c7a

打开浏览器输入地址http://192.168.159.161:5000/v2/_catalog进行访问:

这里的显示表示私有仓库搭建成功,但是内容还是空的需要增加内容:

修该daemon.json

{
"registry-mirrors": ["https://registry.dockercn.com","https://mj9kvemk.mirror.aliyuncs.com"],
"insecure-registries":["192.168.159.161:5000"]
}

重启docker:

systemctl restart docker

将registry容器启动:

docker start registr

2.3上传镜像到私有仓库:

打标签:

docker tag jdk1.8 192.168.159.161:5000/jdk1.8

查看:

将该镜像上传到私有仓库:

push  192.168.159.161:5000/jdk1.8

浏览器查看(这里上传成功了):

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

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

相关文章

【服务器数据恢复】IBM存储分配的卷无法访问的数据恢复案例

服务器故障: 一台IBM DS存储出现故障,存储分配给aix小机的卷无法访问。从底层查看分配给aix小机的3个卷的lvm信息丢失。 服务器数据恢复过程: 1、将存储中所有磁盘编号后取出,以只读方式做全盘镜像,后续的数据分析和数…

【C++篇】字符串:标准库string类

友情链接:C/C系列系统学习目录 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的…

Eyeshot 2023 Added NuGet packages.

Added Microsoft Visual Studio 2022 Extensions menu item.Microsoft .NET 6 Windows Toolbox items.Added NuGet packages.Planar curve projection on Sketch plane.Improved fillet surfaces quality and speed.Added ICurve.ConverToLinearPath() family of methods.   …

RabbitMQ学习笔记4(小滴课堂)RabbitMQ工作队列模型实战

Java项目整合RabbitMQ 创建一个maven项目。 然后我们在maven里加上jdk和rabbitmq的依赖设置: 我们写一段生产者的代码: 然后我们去运行它: 可以看到这里有一个队列。 现在我们是可以查看到队列的。 我们去写消费者代码: 这里的之…

LeetCode 2090. K Radius Subarray Averages【前缀和,滑动窗口,数组】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

Redis是什么,如何学习,如何整合SpringBoot?

目录 一、Redis是什么? 二、如何学习Redis 三、如何整合SpringBoot 一、Redis是什么? Redis 是一个高性能的开源 NoSQL 数据库,支持多种数据结构,包括字符串、哈希、列表、集合和有序集合等。它采用内存存储,可以快…

Python3 函数与数据结构 | 菜鸟教程(十一)

目录 一、Python3 函数 (一)定义一个函数 1、你可以定义一个由自己想要功能的函数,以下是简单的规则: 2、语法 3、实例 ①让我们使用函数来输出"Hello World!": ②更复杂点的应用&#xff…

axios 发送请求请求头信息不包含Cookie信息

问题 axios 发送请求请求头信息不包含Cookie信息 详细问题 使用VueSpringBoot进行项目开发,axios进行网络请求,发送请求,请求头信息不包含Cookie信息 具体如下 实际效果 预期效果 解决方案 作用域 Vue项目全局配置 打开Vue项目的入口…

SpringSecurity是什么,如何学习SpringSecurity?

目录 一、SpringSecurity是什么 二、如何学习SpringSecurity 三、SpringSecurity整合springboot 一、SpringSecurity是什么 Spring Security是一个功能强大的安全框架,它为企业级应用程序提供了完整的身份验证和授权管理。它是一个开源项目,由Pivota…

Linux:第五章课后习题及答案

第五章 Linux常用命令 Q1:常用的文本内容显示命令有哪些?区别是什么? 文本内容显示的命令有cat,more,less, head,tailcat:显示文本文件, 也可以把几个文件 内容附加到另…

第一章 AlexNet网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

python绘画多边形(turtle)

目录 前言 正三角形 正四边形 正多边形 总结: 前言 事情的起因是,我今天心血来潮想让openai生成路飞的图像看效果怎么样,他是这样回我的。 我这一想,这不稳了吗,这么轻松。结果…… import turtle# 定义画笔颜色…

【Visual Studio】报错 C1083,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 文章目录 问题解决方案Ref. 问题 使用 C 语言,配合 Qt 开发串口通信界面时,报错代码 C1083。 复制一下错误信息,方便别人…

【C语言进阶】编译链接

文章目录 📖程序的两种环境 🔖翻译环境🔖执行环境 📖详解翻译环境🔖从人的角度去看编译链接🔖预编译🔖编译🔖汇编🔖链接🔖符号表的作用 📖执行环境…

外贸订单管理平台有哪些?

外贸订单的管理是外贸出口业务中非常重要的一项管理工作,订单能否实现准时交付则需要涉及到各种流程顺畅的支持。那么外贸订单管理平台有哪些?有孚盟软件。 首先,外贸订单管理平台主要是解决外贸公司的订单查询与管理,面对大量不…

2.4G无线收发芯片 XL2400,SOP8封装,外挂MCU使用

XL2400 芯片是工作在 2.400~2.483GHz 世界通用 ISM 频段的单片无线收发芯片。该芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块,并且支持一对多组网和带 ACK 的通信模式。发射输出率、工作频道以及通信数据率均可配置。芯片已将多颗外围贴片阻容…

mysql错误-1055 - Expression #1 of SELECT list is not in GROUP BY clause 解决方案

目录 业务场景发现问题表结构表数据sql查询 分析问题验证 解决问题方案一方案二方案三 注意事项 业务场景 当遇到数据库重复数据,就要将数据进行分组,取其中一条来展示,此时就要用到group by语句。 但当mysql的版本高于5.7时,在执…

ESP32设备驱动-TCA9548A-I2C多路复用器驱动

TCA9548A-I2C 多路复用器驱动 文章目录 TCA9548A-I2C 多路复用器驱动1、TCA9548A介绍2、硬件准备3、软件准备4、驱动实现4.1 TCA9548A总线复用实现4.2 驱动多个OLED显示屏4.3 驱动多个BME280传感器在本文中,将介绍如何使用 TCA9458A I2C 多路复用器扩展 I2C 总线端口。 如果你…

【Python 基础篇】Python 列表及列表常用函数

文章目录 一. 什么是列表二. 列表的创建和访问2.1 创建列表2.2 访问列表元素 三. 列表的操作3.1 修改列表元素3.2 列表的添加和删除元素3.2.1 添加元素3.2.2 删除元素 3.3 列表的排序3.4 判断元素是否在列表中 四. 列表的常用函数和方法五. 总结 一. 什么是列表 在Python中&am…

CLO-GitHub网站注册登录

一、GitHub GitHub是一个面向开源及私有软件项目的托管平台,仅支持Git作为唯一的版本库格式进行托管。 二、登录官网 网站:https://github.com/ 2.1 注册Sign up Enter your Email(输入邮箱地址)->Continue-> ->Create a…