当前位置: 首页 > news >正文

Docker镜像操作

镜像名称

镜名称一般分两部分组成:[repository]:[tag]

在没有指定tag时,默认是latest,代表最新版本的镜像。

image

这里的mysql就是repository5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。

镜像命令

帮助文档

# 查看帮助文档,会列出docker所有的命令
docker --help
# 查看某个命令的详解
docker [命令] --help

镜像操作命令

# 构建镜像
docker build
docker build [OPTIONS] PATH | URL |# 查看镜像
docker images
docker images [OPTIONS] [REPOSITORY[:TAG]]
# 删除镜像
docker rmi
docker rmi [OPTIONS] IMAGE [IMAGE...]# 推送镜像到服务
docker push
docker push [OPTIONS] NAME[:TAG]
# 从服务拉取镜像
docker pull
docker pull [OPTIONS] NAME[:TAG|@DIGEST]# 保存镜像为一个压缩包
docker save
docker save [OPTIONS] IMAGE [IMAGE...]
# 加载压缩包为镜像
docker load
docker load [OPTIONS]

image

下载Nginx镜像[例]

镜像仓库地址:https://hub.docker.com/

搜索需要的镜像

image

使用推荐命令,或者指定版本

image

拉取镜像
docker pull nginx
查看镜像
docker images
导出镜像
docker save -o nginx.tar nginx:latest
删除镜像
docker rmi nginx:latest
加载打包好的镜像
docker load -i nginx.tar

镜像结构

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

image

简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

构建镜像,其实就是实现上述打包的过程。

Dockerfile语法

构建自定义的镜像时,并不需要一个个文件去拷贝,打包。

只需要告诉Docker镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,Docker就会构建镜像。

而描述上述信息的文件就是Dockerfile文件。

  • Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
  • Dockerfile的第一行必须是FROM,从一个基础镜像来构建
  • 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

image

官网文档: https://docs.docker.com/engine/reference/builder

构建Java项目

基于Ubuntu镜像构建[例]

创建一个文件夹,将JDK和jar包文件放入该文件夹下,还有写好的Dockerfile文件

image

Dockerfile文件内容
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
构建镜像
docker build -t javaweb:1.0 .
# -t:镜像的名字和版本号
# .:dockerfile所在的目录,因为这里就在当前目录,所以写个 .
启动容器
docker run --name web -p 8090:8090 -d javaweb:1.0
基于java8构建[例]

虽然可以基于Ubuntu基础镜像,添加任意安装包,构建镜像,但是却比较麻烦。大多数情况下,可以在一些安装了部分软件的基础镜像上做改造。

构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。基于java:8-alpine镜像。

Dockerfile文件内容
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar

其他的操作和上面的一样。

搭建镜像仓库

简化版仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

命令如下:

docker run -d \--restart=always \--name registry	\-p 5000:5000 \-v registry-data:/var/lib/registry \registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog可以查看当前私有镜像服务中包含的镜像。

图形化界面仓库

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:registry:image: registryvolumes:- ./registry-data:/var/lib/registryui:image: joxit/docker-registry-ui:staticports:- 5000:80environment:- REGISTRY_TITLE=乔木先生私有仓库- REGISTRY_URL=http://registry:5000depends_on:- registry
配置信任地址

私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.120.100:5000"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

如果这里还报错:

image

Get "https://192.168.120.100:5000/v2/": http: server gave HTTP response to HTTPS client

在下面的文件中,第13行左右增加--insecure-registry ip地址:端口号

vim /usr/lib/systemd/system/docker.service

image

然后重启docker即可

# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

最后进入放置docker-compose.yml的文件夹中执行命令:

docker-compose up -d

推送、拉取镜像

推送镜像到私有镜像服务必须先tag,步骤如下:

① 重新tag本地镜像,名称前缀为私有仓库的地址:192.168.120.100:5000/

docker tag nginx:latest 192.168.150.101:8080/nginx:1.0 

② 推送镜像

docker push 192.168.150.101:8080/nginx:1.0 

③ 拉取镜像

docker pull 192.168.150.101:8080/nginx:1.0 

相关文章:

Docker镜像操作

镜像名称 镜名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是latest,代表最新版本的镜像。 这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。 镜像…...

【Java-框架-SpringSecurity】单点登录(认证和授权)- 随笔

项目文件; 【1】 【2】 【3】 【4】 【5】 【6】 【7】 【8】...

大数据开发之Scala

第 1 章:scala入门 1.1 概述 scala将面向对象和函数式编程结合成一种简洁的高级语言 特点 1、scala和java一样属于jvm语言,使用时都需要先编译为class字节码文件,并且scala能够直接调用java的类库 2、scala支持两种编程范式面向对象和函数式…...

数字时代的大对决

数字时代如今正酝酿着一场大对决,浏览器、艺术品、音乐平台和社交通信的巅峰之战正在发生。Brave、Yuga Labs、Audius和Discord分别对标着Chrome、Disney、Spotify和WhatsApp,这场数字时代的较量不仅涉及浏览器、艺术品、音乐平台和社交通信的竞争&#…...

网络防御保护1

网络防御保护 第一章 网络安全概述 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断 随着数…...

解决Windows下Goland的Terminal设置为Git Bash失败

路径不要选错了: 如果还是不行: 把bash路径加进去试试 goland设置Terminal...

x-cmd pkg | jq - 命令行 JSON 处理器

目录 简介首次用户功能特点类似工具进一步探索 简介 jq 是轻量级的 JSON 处理工具,由 Stephen Dolan 于 2012 年使用 C 语言开发。 它的功能极为强大,语法简洁,可以灵活高效地完成从 JSON 数据中提取特定字段、过滤和排序数据、执行复杂的转…...

网络安全笔记

一、简介 网络安全是指通过管理和技术手段保护网络系统免受未经授权的访问、数据泄露、破坏或摧毁。随着互联网的普及,网络安全问题日益突出,对个人和企业信息安全构成了严重威胁。因此,了解和掌握网络安全知识对于保护个人信息和企业数据至…...

php基础学习之代码框架

一&#xff0c;标记 脚本标记&#xff08;已弃用&#xff09;&#xff1a;<script language"php"> php代码 </script> 标准标记&#xff1a;<?php php代码 ?> 二&#xff0c;基础输出语句 不是函数&#xff0c;…...

LCD-LMD-PSO-ELM的电能质量分类,LCD特征提取,LMD特征提取,粒子群算法优化极限学习机

目录 背影 极限学习机 LCD-LMD-PSO-ELM的电能质量分类,LCD特征提取,LMD特征提取,粒子群算法优化极限学习机 主要参数 MATLAB代码 效果图 结果分析 展望 完整代码下载链接:LCD-LMD-PSO-ELM的电能质量分类,LCD特征提取,LMD特征提取,粒子群算法优化极限学习机资源-CSDN文库…...

【ARMv8M Cortex-M33 系列 7 -- RA4M2 移植 RT-Thread 问题总结】

请阅读【嵌入式开发学习必备专栏 】 文章目录 问题小结栈未对齐 经过几天的调试&#xff0c;成功将rt-thead 移植到 RA4M2&#xff08;Cortex-M33 核&#xff09;上&#xff0c;thread 和 shell 命令已经都成功支持。 问题小结 在完成 rt-thread 代码 Makefile 编译系统搭建…...

分享 GitHub 上的敏感词汇工具类:sensitive-word

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…...

洛谷P1319 压缩技术(C语言)

这样一道入门题目&#xff0c;本来可以用for循环直接操作&#xff0c;但作者异想天开(xian de dan teng)地把所有数据登记在一个数组里面&#xff0c;然后再统一按格式输出。也就是定义一个数组Map&#xff0c;大小为n成n&#xff0c;然后按照输入数据&#xff0c;把Map中每一个…...

HQL,SQL刷题简单查询,基础,尚硅谷

今天刷SQL简单查询&#xff0c;大家有兴趣可以刷一下 目录 相关表数据&#xff1a; 题目及思路解析&#xff1a; 总结归纳&#xff1a; 知识补充&#xff1a; 关于LIKE操作符/运算符 LIKE其他使用场景包括 LIKE模糊匹配情况 相关表数据&#xff1a; 1、student_info表 2、sc…...

MSG3D

论文在stgcn与sta-lstm基础上做的。下面讲一下里面的方法&#xff1a; 1.准备工作 符号。这里是对符号进行解释。 一个人体骨骼图被记为G(v,E) 图卷积&#xff1a; 图卷积定义 考虑一种常用于处理图像的标准卷积神经网络 (CNN)。输入是像素网格。每个像素都有一个数据值向…...

kafka(二)——常用命令

常用脚本 kafka执行脚本默认在安装的bin目录下&#xff0c;本文中示例均基于bin目录执行。 #查询topic状态&#xff0c;新建&#xff0c;删除&#xff0c;扩容 kafka-topics.sh #查看&#xff0c;修改kafka配置 kafka-configs.sh #配置&#xff0c;查看kafka集群鉴权信息 kaf…...

使用Flink处理Kafka中的数据

目录 使用Flink处理Kafka中的数据 前提&#xff1a; 一&#xff0c; 使用Flink消费Kafka中ProduceRecord主题的数据 具体代码为&#xff08;scala&#xff09; 执行结果 二&#xff0c; 使用Flink消费Kafka中ChangeRecord主题的数据 具体代码(scala) 具体执行代码① 重要逻…...

跟着pink老师前端入门教程-day07

去掉li前面的项目符号&#xff08;小圆点&#xff09; 语法&#xff1a;list-style: none; 十五、圆角边框 在CSS3中&#xff0c;新增了圆角边框样式&#xff0c;这样盒子就可以变成圆角 border-radius属性用于设置元素的外边框圆角 语法&#xff1a;border-radius:length…...

Pixelmator Pro Mac版 v3.5 图像处理软件 兼容 M1/M2

在当今数字化时代&#xff0c;图像编辑软件成为了许多人必备的工具之一。无论您是摄影师、设计师还是普通用户&#xff0c;您都需要一款功能强大、易于使用的图像编辑软件来处理和优化您的照片和图像。而Pixelmator Pro for Mac正是满足这一需求的理想选择。 Pixelmator Pro f…...

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(15)-Fiddler弱网测试,知否知否,应是必知必会

1.简介 现在这个时代已经属于流量时代&#xff0c;用户对于App或者小程序之类的操作界面的数据和交互的要求也越来越高。对于测试人员弱网测试也是需要考验自己专业技术能力的一种技能。一个合格的测试人员&#xff0c;需要额外关注的场景就远不止断网、网络故障等情况了。还要…...

【vscode】远程资源管理器自动登录服务器保姆级教程

远程资源管理器自动登录服务器 介绍如何配置本地生成rsa服务端添加rsa.pub配置config文件 介绍 vscode SSH 保存密码自动登录服务器 对比通过账号密码登录&#xff0c;自动连接能节约更多时间效率&#xff0c;且通过vim修改不容易发现一些换行或者引号导致的错误&#xff0c;v…...

写点东西《Javascript switch 语句的替代方法》

写点东西《Javascript switch 语句的替代方法》 那么 switch 语句有什么问题&#xff1f; Object Literal 查找的替代方法 将我们学到的东西变成一个实用函数 您需要的一切都在一个地方# [](#javascript-version) Javascript 版本Tyepscript version&#x1f31f;更多精彩 本文…...

python学习笔记10(循环结构2)

&#xff08;一&#xff09;循环结构2 1、扩展模式 语法&#xff1a; for 循环变量 in 遍历对象&#xff1a; 语句块1 else: 语句块2 说明&#xff1a;else在循环结束后执行&#xff0c;通常和break和continue结合使用 2、无限循环while while 表达式&#xff1a; 语句块…...

Codefroces 191A - Dynasty Puzzles

思路 d p dp dp d p i , j dp_{i,j} dpi,j​ 表示以 i i i 开始以 j j j 结尾的最长长度。方程&#xff1a; d p j , r m a x ( d p j , l , d p j , l l e n g t h l , r ) dp_{j,r}max(dp_{j,l}\;,\;dp_{j,l}length_{l,r}) dpj,r​max(dpj,l​,dpj,l​lengthl,r​) 有点区…...

HIVE中关联键类型不同导致数据重复,以及数据倾斜

比如左表关联键是string类型&#xff0c;右表关联键是bigint类型&#xff0c;关联后会出现多条的情况 解决方案&#xff1a; 关联键先统一转成string类型再进行关联 原因&#xff1a; 根据HIVE版本不同&#xff0c;数据位数上限不同&#xff0c; 低版本的超过16位会出现这种…...

CRM系统是如何解决企业的痛点的?

在当今竞争激烈的商业世界中&#xff0c;客户关系管理&#xff08;CRM&#xff09;数字化转型已经成为大企业成功的重要秘诀。大型跨国公司如亚马逊、苹果和微软等已经在CRM数字化方面走在了前列&#xff0c;实现了高度个性化的客户体验&#xff0c;加强了客户忠诚度。 然而&a…...

系统架构14 - 软件工程(2)

需求工程 需求工程软件需求两大过程三个层次业务需求(business requirement)用户需求(user requirement)功能需求 (functional requirement)非功能需求 概述活动阶段需求获取基本步骤获取方法 需求分析三大模型数据流图数据字典DD需求定义方法 需求验证需求管理需求基线变更控制…...

vue封装接口

目录 封装接口前缀 配置逻辑 接口存放文件 配置代理 获取数据方法 封装接口前缀 config.js const serverConfig {baseURL: "https://xxx.xxxxxxxx.com/api", // 请求基础地址,可根据环境自定义useTokenAuthorization: false, // 是否开启 token 认证};export …...

Dell戴尔XPS 8930笔记本电脑原装Win10系统 恢复出厂预装OEM系统

链接&#xff1a;https://pan.baidu.com/s/1eaTQeX-LnPJwWt3fBJD8lg?pwdajy2 提取码&#xff1a;ajy2 原厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式&#xff1a;esd/wim/swm 安装方式&am…...

elasticsearch的拼音分词器安装

安装拼音分词器 第一步&#xff1a;下载 要实现根据字母做补全&#xff0c;就必须对文档按照拼音分词。在 GitHub 上恰好有 elasticsearch 的拼音分词插件。地址&#xff1a; 仓管的主页&#xff1a; https://github.com/infinilabs/analysis-pinyin 仓管的版本页 https:…...