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

docker容器常用指令,dockerfile

docker:容器,主要是解决环境迁移的问题,将环境放入docker中,打包成镜像。

docker的基本组成:镜像(image),容器(container),仓库(repository)。镜像相当于类,容器相当于类的实例对象,同一个镜像文件,可以生成多个同时运行的容器实例。

镜像是静态的定义,容器是镜像运行时的实体,镜像文件生成容器实例,镜像文件本身也是一个文件,成为镜像文件、

容器是用镜像创建的运行实例,类似于虚拟化的运行环境,应用程序或服务运行在容器里面。容器可以被启动,开始,停止,删除。每个容器是相互独立的。可以把容器看作是一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)

仓库:集中存放镜像文件的场所,分为公开仓库和私有仓库两种形式。docker公司提供的官方仓库为Docker Hub(https://hub.docker.com/)(最大的公开仓库),存放各种镜像模板的地方。我们可以把镜像发布到仓库中(类似于github),需要的时候从仓库中拉下来即可

Docker镜像层都是只读的,容器层是可写的当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层",“容器层"之下的都叫“镜像层"。 

1.docker常用指令

#启动docker
(sudo) systemctl start docker  
#重新启动docker
(sudo) systemctl restart docker
#停止docker
systemctl stop docker
#卸载docker,依次执行下面4条指令,其中第三条,第四条为删除docker相关文件
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd#查看docker版本
docker version
#用于创建并启动一个新的 Docker 容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#查看所有镜像
docker images
#查看容器
docker ps
#查看所有容器
docker ps -a
#查找某镜像
docker search 镜像名 
#下载镜像
docker pull 镜像名   或  docker pull 镜像名:TAG
#查看镜像/容器/数据卷所占的空间
docker system df
#删除某个镜像
docker rmi 镜像ID
#强行删除某个镜像
docker rmi -f 镜像ID
#删除容器
docker rm 容器名或容器id   #只能删除已经停止的容器
#强制删除容器
docker rm -f 容器名或容器id

 

2. 构建镜像

2.1docker commit 构建镜像

        docker commit 命令 : 用于将一个镜像进行提交成一个新的副本 

        使用 docker commit 构建镜像,可以先找一个合适的基础镜像,使用基础镜像运行一个容器,然后根据自己的需求对这个容器进行修改,修改好之后,使用 docker commit 命令生成新的镜像。最常用的基础镜像就是各个 Linux 发行版的镜像。  

        比如说我们从仓库(repository)中pull一个名为ubuntu的镜像,用该镜像创建的容器里,没有vim指令,我们进入此容器,安装vim指令包。然后退出容器,在容器外面,使用 docker commit 命令生成新的镜像,使用该新镜像创建容器时,创建的容器则有vim指令。

docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]
#目标镜像名:[TAG]是我们要新生成的镜像及对应版本号

docker commit 构建镜像的缺点:上面我们了解了通过对容器的可写层进行修改,来生成新的镜像。但是这种方式会让镜像的层数越来越多,联合文件系统最多允许128层。另外,许多上层的应用镜像都基于相同的基础镜像的话,一旦基础镜像需要改动,比如一些安全漏洞,所有的上层应用镜像都需要进行相应的改动,或者重新构建,会产生大量的重复工作。那还有没有更好的方式呢?答案是 Dockerfile。

2.1Dockerfile构建镜像

参考:Dockerfile 详解-CSDN博客

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。 

 dockerfile编写规则:

 常见指令:

相关文章:

docker容器常用指令,dockerfile

docker:容器,主要是解决环境迁移的问题,将环境放入docker中,打包成镜像。 docker的基本组成:镜像(image),容器(container),仓库(repository)。镜像相当于类,容器相当于类的实例对象…...

C语言学习笔记 Day11(指针--下)

Day11 内容梳理: 目录 Chapter 7 指针 7.6 指针 & 函数 (1)形参改变实参的值 (2)字符数组作为函数参数 1)合并字符串 2)删掉字符串中空格 (3)指针作为函数返…...

(24)(24.2) Minim OSD快速安装指南(二)

文章目录 前言 6 MinimOSD-extra NG 7 替代硬件 前言 本文简要介绍了如何连接电路板。有关更多详细说明,请参阅 MinimOSD 项目维基(MinimOSD Project wiki)。 6 MinimOSD-extra NG 该项目位于此处(here);文档位于此处(here);支撑线位于此…...

GD32 MCU碰到IIC总线卡死怎么办?

大家在使用MCU IIC通信时,若碰到设备复位或者总线干扰等情况,可能会导致IIC总线卡死,表现上总线上SDA或者SCL其中一根线为低电平,IIC总线一直处于busy状态。此时若代码上一直等待总线空闲,则可能导致软件死机&#xff…...

算法——动态规划:0/1 背包问题

文章目录 一、问题描述二、解决方案1. DP 状态的设计2. 状态转移方程3. 算法复杂度4. 举例5. 实现6. 滚动数组6.1 两行实现6.2 单行实现6.3 优缺点 三、总结 一、问题描述 问题的抽象:给定 n n n 种物品和一个背包,第 i i i 个物品的体积为 c i c_i …...

又是奇瑞,“统一下班时间”过去不久,最近又整新活了...

奇瑞 345 345 可不是奇瑞的汽车型号,而是奇瑞 7 月份会议文章中提出的新策略。 简单来说,要提高加班效率,实现 3 个人干 5 个人活,拿 4 个人的工资,要把员工当成家人一样看待,要对他们的健康幸福负责。 前面…...

ubuntu24.04lts cmake编译 opencv4.5.4 contrib的一些问题

编译之前一定要安装好必须的库,否则即使提示编译成功,调用opencv后也可能会有问题 sudo apt-get update sudo apt-get upgradesudo apt-get install -y g sudo apt-get install -y cmake sudo apt-get install -y make sudo apt-get install…...

大数据面试SQL(三):每分钟在线直播人数

文章目录 每分钟在线直播人数 一、题目 二、分析 三、SQL实战 四、样例数据参考 每分钟在线直播人数 一、题目 有如下数据记录直播平台主播上播及下播时间,根据该数据计算出平台每分钟的在线直播人数。 这里用主播名称做统计,前提是主播名称唯一…...

python中执行mysql操作并将python脚本共享

mysql下载路径&#xff1a; ​​​​​​MySQL :: MySQL Community Downloads [root2 ~]# vim py001.py a3 b4 print(ab) print(a**2b**2) [root2 ~]# python py001.py 7 25 [root2 ~]# python3 >>> import random >>> random <module rando…...

HTTP、HTTPS、SOCKS5三种协议特点

在互联网通信中&#xff0c;HTTP、HTTPS和SOCKS5是三种至关重要的协议&#xff0c;它们各自具有独特的特点和应用场景。本文将详细探讨这三种协议的特点&#xff0c;帮助读者更好地理解它们在网络通信中的作用。 一、HTTP协议特点 HTTP&#xff08;Hypertext Transfer Protoc…...

在ubuntu、centos、openEuler安装Docker

目录 ubuntu、centos、openEuler安装Docker 1.在 Ubuntu 上安装 Docker 1. 1 更新软件包 1. 2 安装必要的依赖 1.3 添加 Docker 的 GPG 密钥 1.4 添加 Docker 仓库 1.5 更新软件包 1.6 安装 Docker 1.7 启动并启用 Docker 服务 1.8 验证安装 1.9 运行测试容器 1.10…...

公共命名空间的例子3

有这样一个句子 用x语言解释[12*3]。 在x语言中&#xff0c;不符合“先乘除后加减”&#xff0c;这个句子应该怎样解释呢&#xff1f; 第一步&#xff0c;进行词法分析&#xff0c;目的是识别出注释和字符串&#xff0c;其中可能包括任意符号&#xff0c;干扰编译过程。 第二步…...

【云存储】SDS软件定义存储,数据存储的类型与技术方案(块/文件/对象,Ceph、RBD等)

【云存储】SDS软件定义存储&#xff0c;数据存储的类型与技术方案&#xff08;块/文件/对象&#xff0c;Ceph、RBD等&#xff09; 文章目录 1、分布式存储架构&#xff08;软件定义存储SDS&#xff0c;超融合基础架构HCI&#xff09;2、存储类型&#xff08;块存储&#xff0c;…...

第31课 Scratch入门篇:小画家(舞台上画画)

小画家(舞台上画画) 故事背景: 在舞台上选择画笔和颜色,进行画画 程序原理: 这节课我们继续练习画笔功能,通过画笔功能我们设计一个小画板,碰到哪种颜色画笔就切换成哪种颜色。 开始编程 1、绘制一大一小的黑色圆形,小的命名为画笔,大的圆形命名为black(黑色) 2、鼠…...

QT UI界面之ListView

文章目录 概述源码怎么用代码qt design 小结 概述 本来把布局文件那块写了一遍&#xff0c;但是看看都跟之前那篇差不多&#xff0c;就换了一个稍微有点难度的&#xff0c;也很常用的listview来写了。来看看&#xff0c;有什么好玩的。 源码 先看下源码&#xff0c;如下&…...

freeRTOS互斥量(mutex)

目录 前言 一、互斥量概述 二、互斥量函数 1.创建 2.其他函数 三、优先级反转示例 1.概念 2.代码示例 四、优先级继承 1.概念 2.代码示例 五、递归锁 1.死锁的概念 2.自我死锁 3.函数 4.递归锁代码示例 前言 在之前的信号量中&#xff0c;我们想要实现互斥的…...

基于GeoTools使用JavaFx进行矢量数据可视化实战

目录 前言 一、JavaFx展示原理说明 二、GeoTools的Maven依赖问题 三、引入Geotools相关的资源包 四、创建JavaFx的Canvas实例 五、JavaFx的Scene和Node的绑定 六、总结 前言 众所周知&#xff0c;JavaFx是Java继Swing之后的又一款用于桌面应用的开发利器。当然&#xff0…...

zabbix的setup无法进入第二步

注意-部署时&#xff0c;报错要看的日志不止一个&#xff0c;php日志的报错也要看的&#xff0c;nginx接收到请求后是转发到php-fpm的 [rootweb01-84-41 ~]# chmod -R 777 /var/lib/php/session chmod: 无法访问"/var/lib/php/session": 没有那个文件或目录 [rootweb…...

代码随想录算法训练营第四十六天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇

一、115. 不同的子序列 题目链接&#xff1a;115. 不同的子序列 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com)——115. 不同的子序列 视频讲解&#xff1a;动态规划之子序列&#xff0c;为了编辑距离做铺垫 | LeetCode&#x…...

宝塔安装nginx失败报错“检测到系统组件wget不存在,无法继续安装”

宝塔安装nginx失败报错“检测到系统组件wget不存在&#xff0c;无法继续安装” 问题描述解决方案 问题描述 在宝塔中安装lnmp环境时&#xff0c;安装nginx失败报错&#xff1a;检测到系统组件wget不存在&#xff0c;无法继续安装 如下图所示 通过检查发现系统是已经安装了wge…...

C++之运算符重载系列深入学习:从入门到精通!

为什么需要对运算符进行重载 C预定义中的运算符的操作对象只局限于基本的内置数据类型&#xff0c;但是对于我们自定义的类型是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算&#xff0c;这个时候就需要我们对这么运算符进行重新定义&#xff0c;赋予其…...

国赛分析。。。。

山东 6散落2两元素 浙江 8散落两元素 安徽不公布 4散落2元素 120s 华南 8散落两元素 西部 8散落两元素 华北 8 2.。。。 华东 东北 路边6张两元素...

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案 1.Dify 简介 1.1 功能情况 Dify,一款引领未来的开源大语言模型(LLM)应用开发平台,革新性地融合了后端即服务(Backend as a Service,BaaS)与LLMOps的精髓,为开发者铺…...

PLSQL导入导出ORACLE数据提示失败问题修改PLSQL配置

oracle中plsql导入提示无法导入问题 1.首先看下是否环境变量已经配置(具体配置看下面环境变量配置) 2.plsql数据导入中tools-->Preferences中配置如下框中的内容 3.设置 tnsnames.ora文件中看下是否设置有问题 4.PLSQL乱码问题 NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16…...

从Shift+F6到雪花算法:IDEA开发中的那些坑与解法

在日常开发中&#xff0c;提升代码质量和开发效率是每个开发者追求的目标。作为 Java 开发者常用的集成开发环境&#xff0c;IntelliJ IDEA 提供了丰富的功能与快捷键&#xff0c;帮助我们更快速、更高效地完成日常工作。然而&#xff0c;即便是如此强大的工具&#xff0c;也会…...

Linux知识点总结

学习目标 常见的快捷键 Linux 是一个开源的类 Unix 操作系统&#xff0c;广泛应用于服务器、桌面和嵌入式系统。以下是一些重要的 Linux 知识点总结&#xff1a; 基础概念 文件系统&#xff1a;Linux 使用层次化的文件系统结构&#xff0c;根目录为 /&#xff0c;其他目录如 …...

Gradio 快速开发网页应用

Gradio 是一个开源的 Python 框架&#xff0c;可以快速开发页面&#xff0c;Gradio 主要用于 AI 模型 Demo 的开发&#xff0c;通过几行代码可以快速生成一个 Web Demo&#xff0c;由于 AI 算法工程师使用的都是 Python 语言&#xff0c;使用 Python 开发 Demo 会相对简单&…...

spring使用validation参数及全局异常检测

1.validation参数验证工具 1.1.validation-api技术链 validation-api是一个Java的数据校验规范&#xff0c;它定义了一套用于校验Java Bean的API。它是JSR 303规范的一部分&#xff0c;也被称为Bean Validation。validation-api提供了一系列的注解&#xff0c;用于在Java类的…...

学习笔记 韩顺平 零基础30天学会Java(2024.8.8)

P492 第三代日期使用 P493 第三代日期方法 P495 String翻转 作业代码见chapter12homework 对于需要异常处理的情况&#xff0c;可以通过这种想法得到&#xff1a; P495 注册处理题 P496 字符串统计 P497 String内存布局测试题 P498 常见类阶段梳理 P499 集合介绍 集合的使用并不…...

45.跳跃游戏

&#xff1a;双层for。复杂度n*n n class Solution {public int jump(int[] nums) {// 找到所有的条约方法&#xff0c;返回其中的最小次数// 从后向前&#xff0c;依次记录到最后的次数int n nums.length;if(n 1) return 0;// int[] temp new int[n];// temp[n-1] 0;fo…...