docker容器常用指令,dockerfile

news2024/9/23 11:24:05

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

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

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

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

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

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

docker踩坑

1.

        使用镜像创建docker容器的时候,最好加个--privileged参数,此时生成的容器为特权容器,生成容器后,要在容器中输入指令npu-smi info或者/usr/local/bin/npu-smi info,查看你容器挂载的卡是否可用。如不可用,先在容器外看一下有无运行的进程,如果没有,docker ps看一下目前启动的容器,docker exec -it进入容器中输入npu-smi info查看他们挂载的卡,有时候虽然没有进程运行,但是卡被他们挂走了,你也使用不了,此时docker stop 容器id,关掉他们的容器,再进入自己的容器中npu-smi info查看卡是否可用。

2.

        杀死docker容器中的进程,发现GPU或NPU卡上显存还被占用着,此时可是stop掉容器,然后重启。

1.docker常用指令

注意:所有指令中的容器名可以写成容器id

#启动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 stop 容器名
#强行停止容器
docker kill 容器名
#启动容器
docker start 容器名   #此时docker ps可以看到

#查看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编写规则:

 常见指令:

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

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

相关文章

0基础深度学习项目12:基于TensorFlow实现彩色图片分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 一、创建环境二、前期准备2.1 设置GPU2.2 导入数据2.2.1 在TensorFlow框架中导入CIFAR-10数据集2.2.2 数据归一化 2.3数据可视化 三、构建简单的CNN网络&…

kubernetes集群部署oracle 11g数据库服务

背景: 因业务上线需要,研发中心要求在kubernetes测试集群部署一个oracle 11g的数据库,用于业务功能调试。 一、实施部署oracle 11g数据库: 1、拉取oracle 11g的镜像: [rootharbor-02 ~]# docker pull registry.cn-h…

Java之MySQL

1、数据库三大范式 每个字段不可再分,不冗余 非主键字段完全依赖于主键 2、drop 删除整张表,不可回滚;delete删除部分数据行;truncate保留表 删除所有数据 3、innodb存储引擎 支持行级锁、表级锁 支持事务 支持异常奔溃后的安…

拓普壹的选品师项目怎么操作更好?

在拓普壹的选品师项目中,成功的关键在于精细化的操作和系统化的策略。这不仅要求选品师具备深厚的自身能力,还需要明智的选择平台和有效利用新技术。本文将从这三个方面探讨如何更好地操作拓普壹选品师项目。 1. 自身能力培养 选品师的核心任务是从众多商…

SPRING07_自动装配如何加强、@Autowired注解debug分析、总结

文章目录 ①. Spring启动一行代码:②. ApplicationContex增强功能③. 自动装配如何装配进来④. Autowired自动注入细节xml版⑤. Autowired注解版分析⑥. 总结一下 ①. Spring启动一行代码: ①. 创建一个IOC容器,传入容器的xml配置文件,Spring在整个创建容器的过程中全部都准备…

Docker安装达梦数据库详细教程

达梦数据库(DM,Dameng Database)是中国自主研发的关系型数据库管理系统。它由武汉达梦数据库有限公司开发,最早可以追溯到1982年,至今已有几十年的发展历史。达梦数据库在中国市场上具有较高的知名度和市场占有率,特别是在政府、金融、电信、能源等行业有广泛的应用。 自…

深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看

深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看 我将以最简单,基础的形式说明神经网络的训练过程。 搭配以下文章进行学习: 深度学习——卷积神经网络&#xf…

Day18 Linux系统编程学习--文件

文件 (file) 是程序设计中一个重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为 AS…

【森气随笔】python绘图找不同,揭秘不同函数绘图差异。

【森气随笔】python绘图找不同,揭秘不同函数绘图差异。 准备了两组图片,运用了不同绘图函数绘制。然而,令人无语的是,有人竟直言不讳地表示难以察觉其中的差别。非常好奇,是差异太小还是不愿意承认呢?感兴趣…

Linux-服务器硬件及RAID配置实验

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 8.Linu…

利用shell脚本一键查询ceph中bucket桶的占用大小

在 Ceph 对象存储中(例如使用 RADOS Gateway 提供的 Swift 或 S3 接口),你可能需要了解某个桶(bucket)的占用大小。 以下是如何在 Ceph 中查看桶的占用大小的方法: 1. 使用 radosgw-admin 工具 radosgw-a…

2024最新整理Python基础知识点汇总(可下载)期末复习必备!

前言 由于篇幅限制,我把所有的Python基础知识点和实战代码全部打包上传至CSDN官方认证的微信上,需要的同学可以自取!下载保存在你自己的电脑上(保证100%免费) 1 变量和简单数据类型 变量命名格式:变量名 …

Linux-Shell管道命令及脚本调试-06

上一章我们讲了一半的管道命令,今天把剩下的讲完 1、管道命令 字符转换命令 tr, col, join, paste, expand 1.1 tr 一种可将字符进行替换、压缩、删除,可以将一组字符转换成另一组字符 格式; tr [-parameter] [string1] [string2] 参数: 参数说…

vs2019 QtConcurrent多线程使用方法

QtConcurrent::run(xxx) 1.打开QT Project Setting-》点击Qt Modules 2.头文件包含&#xff1a; #include <QtConcurrent/QtConcurrent> 3.使用方法&#xff1a; QFuture<void> future1 QtConcurrent::run(this, &auto_pack_line_demo::UpdateVisionComm)…

漏洞复现-Apache Kafka Clients JNDI注入漏洞 (CVE-2023-25194)

1.漏洞描述 Apache Kafka 是一个开源分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。 在版本3.3.2及以前&#xff0c;Apache Kafka clients中存在一处JNDI注入漏洞。如果攻击者在连接的时候可以控制属性sasl.jaas.conf…

今是科技携手福瑞莱,共筑环境微生物检测技术创新与发展

近日&#xff0c;成都今是科技有限公司&#xff08;以下简称“今是科技”&#xff09;与福瑞莱环保科技&#xff08;深圳&#xff09;股份有限公司&#xff08;以下简称“福瑞莱”&#xff09;正式宣布达成深度战略合作。此次合作旨在将双方的优势资源与技术力量相结合&#xf…

再见,Midjourney | FLUX 彻底改变了 AI 图像游戏

Flux 刚发布一周&#xff0c;大家都疯了&#xff01; 因为真的是分不清是AI还是真实啊&#x1f3f4;‍☠️ Flux生成 Flux生成 FLUX 彻底改变了 AI 图像游戏。 02 黑深林 Black Forest Labs由Stable Diffusion模型的原班人马创立&#xff0c;旨在开发并开源高质量的图像和…

无字母数字_$ webshell之命令执行

题解分析&#xff1a; 代码案例 当然&#xff0c;这道题的限制&#xff1a; webshell长度不超过35位 不包含字母数字&#xff0c;还不能包含$和_ 所以&#xff0c;如何解决这个问题&#xff1f; shell下可以利用.来执行任意脚本 Linux文件名支持用glob通配符代替 第一点.…

Java语言程序设计基础篇_编程练习题**16.19(控制一组风扇)

**16.19&#xff08;控制一组风扇&#xff09; 编写一个程序&#xff0c;在一组中显示三个风扇&#xff0c;有控制按钮来启动和停止整组风扇&#xff0c;如图16-44所示。 习题分析 要完成这道题目&#xff0c;需要将16.18中的代码变成一个自定义面板(继承自BorderPane)&#…

考研概率论如何复习最高效?能拿满分

概率论跟哪写老师的课程&#xff1f; 推荐三个老师&#xff1a; 喻老&#xff1a;基础讲的很好 喻老的线性代数课在今年已经非常有名&#xff0c;但其实他讲授的概率论课程同样十分出色。喻老的课程特点在于讲解非常细致&#xff0c;特别适合基础较为薄弱的学生。此外&#…