docker构建镜像、私有仓库registry、数据卷详细操作

Docker-搭建私有镜像仓库 Docker官方的Docker Registry因为带有图形化界面版本的镜像仓库不是官方提供的,而是由第三方个人基于 Docker 官方的 Docker Registry 进行开发的,所以部署时需要两个静像,我们使用 compose 文件进行部署。因为企业中的镜像那不都是商业机密么,肯定不希望开源,不然还怎么赚钱,所以企业自己的镜像最好是采用私有Docker Registry来实现。(就是将本地镜像重命名一下,他们的镜像 ID 都是一样的,本质上还是同一个镜像)可以查看当前私有镜像服务中包含的镜像。 阅读详情

一、构建自定义镜像的三种方式

  • Dockerfile(基于源镜像修改配置,用dockerfile生成自己需要的镜像),用于新业务
  • 基于已有的镜像容器进行创建,常用在业务升级。
  • 基于本地模板进行构建(使用极少)

1.1 Dockerfile基于源镜像修改配置

1.11Dockerfile文件

  • Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。

1.12 镜像的分层

  • Dockerfile中的每个指令都会创建一个新的镜像层
  • 镜像层将被缓存和复用
  • 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
  • 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效
  • 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件
    所以在Dockerfile创建镜像过程中会产生临时容器缓存数据,但是创建完成后临时容器都会被删除。

1.13 文件结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

下面是操作命令的详解:

FROM:指明构建的新镜像是来自于哪个基础镜像;
MAINTAINER:指明镜像维护者及其联系方式;
RUN:执行什么命令;
CMD:指定一个容器启动时要运行的命令,Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换;
EXPOSE:声明容器运行的服务端口;
ENV:构建镜像过程中设置环境变量;
ADD:将宿主机上的目录或者文件拷贝到镜像中(会帮你自动解压,无需额外操作);
COPY:作用与ADD类似,但是不支持自动下载和解压;
ENTRYPOINT:指定一个容器启动时要运行的命令,用法类似于CMD,只是有由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指定的程序;
VOLUME:容器数据卷,指定容器挂载点到宿主机自动生成的目录或者其他容器(数据保存和持久化工作,但是一般不会在 Dockerfile 中用到,更常见的还是命令 docker run 的时候指定 -v 数据卷。);
WORKDIR:相当于cd命令,切换目录路径;

在这里插入图片描述
创建步骤:

mkdir /apache
cd apache

vim Dockerfile      #注意:这里的文件名必须是Dockerfile,不可以更改
#基于基础镜像
FROM centos:7    
#维护镜像的用户信息
MAINTAINER this is test
#镜像操作指令安装apache软件
RUN yum -y update
RUN yum -y install httpd
#开启80端口
EXPOSE 80
#复制网站首页文件
ADD index.html /var/www/html/index.html      #稍后编写index.html文件放在同一目录下
#将执行脚本复制到镜像中
ADD run.sh /run.sh      #启动脚本放在同一目录下
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]

在这里插入图片描述

在Dockerfile文件里不能使用systemctl、service等命令启动服务,可以编写一个run.sh脚本
在这里插入图片描述
创建新镜像

echo "this is ky06" > index.html
#生成镜像
格式:docker build -t 仓库名称:[标签].
docker build -t httpd:centos .    (注意别忘了末尾有".")

在这里插入图片描述

#新镜像运行容器
格式:docker run -d --name 名字 -p 端口:源端口 仓库名称:[标签]
docker run -d --name web1 -p 1216:80 httpd:centos

在这里插入图片描述
虚拟机测试
在这里插入图片描述

1.2基于已有的镜像容器进行创建

创建容器

[root@bogon ~]# docker create -it centos:7 /bin/bash

在这里插入图片描述
将容器里面运行的程序及运行环境打包生成新的镜像

docker commit [选项] 容器ID/名称 仓库名称:[标签]
  -m:说明信息
  -a:作者信息
docker commit -m "new" -a "daoke" 容器ID daoke:centos

在这里插入图片描述

1.3基于本地模板创建

//虚拟机在线下载软件包,速度慢(建议用迅雷软件下载加速)
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

cat debian-7.0-x86-minimal.tar.gz | docker import - daoke: debian

在这里插入图片描述

二、私有仓库简易版 registry 建立

1、下载仓库镜像
docker pull registry

2、在客户终端中设置,指定私有仓库位置
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.100.20:5000"],  #添加虚拟机的IP地址和端口
 . . . 
}
systemctl restart docker

3、生成registry容器,开放5000端口
//宿主机的/data/registry自动创建挂载容器中的/tmp/registry
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
在这里-v 指定外部存储时会自动创建此目录。
因为docker重启,容器关闭,需要重启
docker ps -a   #查看仓库ID号
docker start 仓库ID

在这里插入图片描述


镜像打标签docker tag 原镜像名 仓库IP:端口/镜像名
docker pull nginx

d[root@bogon apache]# docker tag httpd:centos 192.168.100.20:5000/httpd  (必须修改)
格式:docker tag nginx:latest 私有仓库节点:端口/镜像名称

5、上传镜像
格式:docker push 仓库IP:端口/镜像名
[root@bogon apache]# docker push 192.168.100.20:5000/httpd

在这里插入图片描述

//获取私有仓库列表
[root@localhost ~]# curl -XGET http://192.168.100.136:5000/v2/_catalog
{"repositories":["nginx"]}      #显示上传成功

//删除原有的,测试私有仓库是否下载OK
docker pull 192.168.100.136:5000/nginx

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

三、Docker 数据卷和数据卷容器

数据卷:挂载宿主系统的存储空间
数据卷容器:挂载容器的存储空间

在这里插入图片描述

#宿主机目录/var/www 挂载容器中的/data1
格式:docker run -it --name 名字 -v 宿主机目录:容器内目录 仓库名称 /bin/bash
docker run -v /var/www:/data1 --name web1 -it centos /bin/bash 

命令执行后自动进入容器里了
[root@bogon apache]# docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
[root@b256582d44f7 /]# ls
anaconda-post.log  data1  etc   lib    media  opt   root  sbin  sys  usr
bin                dev    home  lib64  m
[root@b256582d44f7 /]# cd /data1/
[root@b256582d44f7 data1]# touch aa.txt
[root@b256582d44f7 data1]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 27 22:20 aa.txt
[root@b256582d44f7 data1]# echo "tis is aa" > aa.txt 
[root@b256582d44f7 data1]# ls
aa.txt
[root@b256582d44f7 data1]# cat aa.txt 
tis is aa

另开一个终端窗口查看是否有/var/www/taa.txt文件。
在这里插入图片描述

# 数据卷容器创建
1、现在容器里创建一个目录
docker run --name web200 -v /data1 -v /data2 -it centos:7 /bin/bash


2、另开一个终端,新容器挂载数据卷容器web3
docker run -it --volumes-from web200 --name db2 centos:7 /bin/bash

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

Docker的使用 本章如何搭建以及使用docker命令构建镜像以及高级玩法 阅读详情

相关推荐

AlpineLinux搭建docker本地私有仓库registry

摘要 本文详细介绍了在AlpineLinux系统下搭建私有Docker Registry的完整流程。首先概述了Docker Registry作为轻量级镜像仓库的核心作用,特别适用于企业内部隔离环境。部署步骤包括:1) 拉取官方registry镜像;2) 配置daemon.json文件添加私有仓库地址;3) 运行registry容器并指定存储目录。测试环节展示了完整的镜像推拉流程:从拉取nginx测试镜像、打标签、推送至私有仓库,到最终删除本地镜像后重新从私有仓库拉取的验证过程。文章还提供了查看仓库镜像列表和

山岚的运维笔记 1607

docker实战(五):docker镜像及仓库配置

docker镜像与Docker仓库配置 docker运行

天涯芳草 1万+

docker仓库——搭建registry私有仓库

docker仓库一、什么是仓库二、docker hub三、registry工作原理四、配置镜像加速器五、搭建私有仓库1、导入registry镜像2、添加证书和密钥3、添加用户认证功能4、建立registry容器5、docker主机认证 一、什么是仓库 1、docker 仓库是用来包含镜像的位置,docker提供一个注册服务器(register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。 2、docker运行中使用的默认仓库是 docker hub 公共仓库。 二、docker hub

S_K15的博客 4252

【Docker】搭建 Docker 镜像仓库

在 Docker 生态系统中,镜像仓库(Docker Registry)扮演着关键的角色,用于存储和分享 Docker 镜像。镜像仓库有公共的和私有的两种形式,每种形式都有其特定的应用场景。 公共镜像仓库 Docker Hub Docker Hub 是 Docker 公共仓库,是最大的 Docker 镜像仓库之一。它提供了大量的公共镜像供用户使用。你可以在 Docker Hub 上找到官方的基础镜像,也可以找到其他用户分享的各种应用和工具的镜像。 国内云服务商提供的公共仓库 由于 Docker Hub

qq_61635026的博客 1万+

Docker搭建官方私有仓库registry及相关配置

本文介绍了Docker私有仓库registry的搭建方法。首先拉取registry镜像并启动容器,默认端口5000。关闭防火墙后通过浏览器访问验证仓库是否搭建成功。为了让Docker信任私有仓库地址,需修改/etc/docker/daemon.json文件,添加"insecure-registries"配置项。虽然registry搭建简单,但文章指出其功能有限,推荐企业使用更强大的Harbor作为镜像管理方案。

꯭ 瞎꯭扯꯭蛋꯭的博客 1607

为什么你的SSE连接总断?深入对比EventSource与fetch-event-source的5大差异点

本文深入对比了原生EventSource与@microsoft/fetch-event-source库在SSE连接稳定性上的五大关键差异。重点剖析了后者在请求能力、连接控制、错误处理、数据解析及性能优化方面的优势,特别是其支持POST请求、自定义Header、精细化的重连策略与生命周期管理,为解决生产环境中SSE连接频繁断开的问题提供了专业方案。

weixin_28077113的博客 493

Docker镜像仓库搭建

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose (仅参考,可手动到https://github.com/docker/compose进行下载)-v /data/registry:/var/lib/registry指定将镜像存储到宿主机的/data/registry。

weixin_52677844的博客 5062

HFSS实战:手把手教你设计一款小型化圆极化微带天线(附仿真文件)

本文详细介绍了使用HFSS设计小型化圆极化微带天线的完整流程,包括工程初始化、辐射贴片设计、仿真设置与优化等关键步骤。通过实战案例,帮助工程师掌握圆极化天线设计技巧,解决轴比控制和耦合馈电匹配等核心问题,适用于物联网终端和便携式设备应用。

weixin_32770423的博客 336

使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)

三.根据刚构建的自定义镜像创建一个容器(让外部访问容器) 🤨:什么是dockerfile? 😎:Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使 用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙

qq_58804301的博客 7342

AUTOSAR Dem模块实战配置:从理论到代码生成的完整指南

本文提供了一份AUTOSAR Dem模块从理论到代码生成的完整实战配置指南。文章详细拆解了配置流程,涵盖Dem模块的核心角色、通用骨架搭建、事件与DTC映射、消抖机制配置,以及与BswM、EcuM、DCM等模块的联调方法,旨在帮助汽车电子工程师快速掌握诊断事件管理的关键配置步骤,生成可运行的代码。

3c4x5z6v7b的博客 454

深入AOSP构建系统:从BUILD_FINGERPRINT的生成逻辑,看如何定制你的Android设备标识

本文深入解析AOSP构建系统中的设备指纹生成机制,详细介绍了BUILD_FINGERPRINT的生成逻辑及其在Android设备中的关键作用。通过分析多个指纹属性的区别与联系,以及如何定制设备标识,帮助开发者更好地理解和掌握Android系统构建过程。

weixin_27017211的博客 216

Docker容器----镜像构建、私有仓库、数据卷、端口映射

文章目录前言:一、Docker 镜像构建1.1 docker镜像创建方式1.2 Dcokerfile1.2.1 镜像的分层1.2.2 dockerfile 文件结构1.3 基于dockerfile创建镜像1.4 基于已有的镜像容器进行创建1.5 基于本地模板创建二、私有仓库简易版registry创建三、Docker 数据卷和数据卷容器四、端口映射五、容器互联总结 前言: 本篇博客主要就Docker...

weixin_45726050的博客 1042

BES (恒玄)HFP通话笔记

1.audio_developer 调试:SDK 需要打开某个算法,需要原厂打开对应宏定义编译出新的SDK,只要涉及到lib库里的功能都需要原厂手动修改编译。开发商和原厂FAE做起来都会比较累。如果没有原厂支持根本没法做,很少文档,SDK也很多问题,没法开箱即用如果要支持audio_developer上位机调试,还需改代码,如果对整个原理不清楚就没法做,没文档只能啃代码调试工具设计的也有待加强,串口通讯调试对耳机这类产品非常麻烦,本来板子就不大,还要焊接一堆线,调试还要拖着串口线。

飞天鱼 685

docker常用命令

docker常用命令 从服务拉取镜像 # docker pull [镜像名称] docker pull nginx 查看镜像 docker images 删除镜像 # docker rmi [镜像名称]:[镜像版本] docker rmi nginx:latest 推送镜像到服务 # docker push [镜像名称] docker push nginx 保存镜像为一个压缩包 # docker save -o [保存的目标文件名称] [镜像名称] docker save -o

pizm123的博客 863

达梦数据库导入报错:[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告dimp V8,本地编码:PG_GBK, 导入文件编码:PG_UTF8

达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告。4.无视警告,输入y,回车。

十三月的博客 1万+

YOLOv8 | 损失函数改进,最新提出的Shape-IoU,有效涨点

作为检测器定位分支的重要组成,边框回归损失在目标检测任务中发挥巨大作用。现有的边框回归方法,通常考虑了GT框与预测框之间的几何关系,通过使用边框间的相对位置与相对形状等计算损失,而忽略了边框其自身的形状与尺度等固有属性对边框回归的影响。为了弥补现有研究的不足,本文提出聚焦边框自身形状与尺度的边框回归方法。首先我们对边框回归特性进行分析,得出边框自身形状因素与尺度因素会对回归结果产生影响。

kay_545 1913

docker私有仓库的介绍以及 Docker registry 安装

docker私有仓库的介绍以及 Docker registry 安装

墨鸦的博客 1万+

LabVIEW实现HTTP通信

本节简要介绍HTTP通信的基础知识,并以工业物联网平台TLINK中云端设备的数据发布设计为例,阐述互联网环境下HTTP客户端应用程序设计的基本方法。重点讲解工业物联网平台TLINK中HTTP设备的创建、通信数据帧的构造与测试。

不脱发的程序猿 1543

Docker Registry私有仓库搭建与使用

这篇文章详细介绍了如何使用Docker官方Registry镜像搭建私有镜像仓库,包括服务端的环境准备、容器启动、数据卷挂载,客户端的insecure-registries配置,以及如何给本地镜像打标签并推送到私有仓库,最后验证推送结果。文章还对比了不同镜像仓库方案的适用场景,并给出了防火墙、命名规范等常见注意事项,适合小型团队或个人快速搭建轻量级私有仓库。

LinuxSRE、k8s、运维、DBA、大数据 9652

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Docker入门之构建镜像、私有仓库registry、数据卷、端口映射

文章目录一、构建自定义镜像的方式1.1、Dockerfile文件1.1.1、镜像的分层1.1.2、文件结构1.1.3、创建步骤1.2、基于己有的镜像容器进行创建1.3、基于本地模板创建二、私有仓库简易版registry建立 想了解Docker 安装步骤的朋友们可以参考我之前的博客,博客链接: 1、Docker之入门初了解、部署与镜像加速、网络优化 2、Docker之镜像、容器的管理命令详解 3...

qq_28361541的博客 1094

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker本地镜像发布到Docker Registry私有仓库

Docker 镜像是用于创建容器的蓝图,包含了运行应用的所有依赖,如代码、运行时、库和配置文件。它们是轻量级、可移植的,确保应用在任何环境中都能一致运行。每个镜像由多个层组成,每层对应Dockerfile中的一个指令,这种分层帮助实现资源共享,优化存储和传输效率。Docker 镜像可以通过docker build创建,也可以从公共或私有仓库如Docker Hub拉取。使用docker pull命令获取镜像,通过docker push将自定义镜像上传至仓库,以便在多台机器或环境中共享和部署。

1558

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

构建 Docker registry 私有镜像,解决docker私有仓库push出错问题

The push refers to a repository [192.168.137.17:5000/node/helloworld] (len: 1) unable to ping registry endpoint https://192.168.137.17:5000/v0/ v2 ping attempt failed with error: Get https://192.168.137.17:5000/v2/: dial tcp 192.168.137.17:5000: connection

chen798213337的博客 3万+

Docker Registry私有仓库详解

Docker Registry是Docker官方提供的容器镜像仓库,用于存储和分发Docker镜像。通过搭建私有的Docker Registry,企业可以实现对容器镜像的集中管理,确保镜像的安全性和可控性。

CloudJourney的博客 1204

Docker Registry 私有仓库简单搭建

一、概述本文将详细介绍如何在本地搭建一个 Docker 私有 Registry 仓库,并实现镜像的上传和管理。通过私有仓库,可以方便地在本地网络中存储和分发 Docker 镜像,提高开发和部署效率。二、搭建步骤。

2301_78537542的博客 2671

使用Docker registry镜像创建私有仓库

安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境,本文记录简单的搭建过程。

delphiwcdj的专栏 5万+

Docker registry镜像仓库,私有仓库及harbor管理详解

Docker私有仓库是指企业内部使用的仓库,用于存放自身开发的企业级应用的镜像。私有仓库的主要优点包括节省网络带宽和提供镜像资源的有效利用。通过搭建本地私有仓库,企业可以在内部网络中快速下载和上传镜像,不受外网带宽等因素的影响。此外,私有仓库还可以配置仓库认证功能,以确保只有授权的人员可以访问和使用其中的镜像。Harbor是一个由VMware公司开源的企业级Docker Registry项目。它的目标是帮助用户快速搭建一个企业级的Docker Registry服务。

qq_51545656的博客 3102
上一篇: Docker的概述与部署管理基础操作
下一篇: Dockerfile构建编译MYSQL5.6版本镜像
模棱两可宗介
博客等级 码龄6年 416粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值