docker容器常用指令,dockerfile

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.rhkb.cn/news/398077.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学建模~~追逐仿真问题

目录 1.前景介绍 2.题目描述 3.核心思路 4.思路分析 5.代码分析 5.1准备工作 5.2设置循环 5.3终止循环 5.4绘制图形 5.5完整代码 1.前景介绍 今天上午的数学建模培训王老师介绍的这个数学建模相关的经验真的是让我受益匪浅,让我对于数学建模有了更加清晰的…

简单的docker学习 第13章 CI/CD与Jenkins(下)

第13章 CI/CD 与 Jenkins 13.13 自由风格的 CI 操作(最终架构) 前面的架构存在的问题是,若有多个目标服务器都需要使用该镜像,那么每个目标服务器都需要在本地构建镜像,形成系统资源浪费。若能够在 Jenkins 中将镜像相撞构建好并推送到 Har…

【区块链+乡村振兴】福建三明某县农业农村局:茶叶认标购茶区块链溯源平台 | FISCO BCOS应用案例

为了有效打击市场上茶叶假冒伪劣、以次充好的违法行为,从而激励企业参与维护的积极性,促进茶叶产业的良 性循环,进而塑造高品质品牌价值,福建省三明市某县农业农村局基于 FISCO BCOS 建设了茶叶认标购茶区块链溯源平台&#xff0c…

linux内核驱动:GIC中断总结

目录 前言一、整体介绍二、GIC的模块功能说明三、函数接口、数据结构和驱动文件驱动文件数据结构 四、中断使用流程五、中断的扩展 前言 本文基于linux5.10.xxx总结gic使用,gic版本为gicv3,包括gic结构、驱动代码、使用等,等,处理…

入门学习使用overleaf和latex

文章目录 1.下载对应的latex论文模板2.overleaf平台的使用2.1overleaf平台的介绍2.2overleaf平台模板文件的上传2.3latex语法的学习2.3.2 分段(如下图显示)2.3.3 其他2.3.4简单latex实操2.3.5 换行符和换页符2.3.6左右居中对齐2.3.7 字体设置2.3.8插入固定位置图片2.3.9文字包围…

基于区块链的数字身份应用开发(上)

基于区块链的数字身份应用开发(上) 任务一:环境准备 (1)更新镜像源 apt update(2)安装openssl、jdk、git (3)配置JAVA_HOME环境变量 echo "export JAVA_HOME/usr/lib/jvm/j…

HarmonyOS.FA开发流程

开发环境配置 1、DevEco Studio的安装 2、DevEcoStudio模拟运行工程:运行Tools->Device Manager,使用已认证的HW开发者联盟帐号Login(在DP平台申请测试者权限),点击"允许"授权,选择一个设备运…

Windows10、ARM开发板、虚拟机Ubuntu可同时上网

一、Windows10端设置 1、打开网络配置 2、打开适配器 3、将window连接的wifi网卡设置为共享模式 4、查看本地连接的ip 到此,window10端设置完毕 二、设置虚拟机端(Ubuntu) 1、打开网络配置 2、打开适配器 3、查看本地连接的网卡名称 4、配置…

docker RUN覆盖容器主进程命令

docker容器启动失败正常都是由于启动主进程退出导致的,主进程启动命令往往都是由镜像Dockerfile文件最后的ENTRYPOINT或CMD定义的,此时可覆盖主进程启动命令,更换一个挂起的命令即可。我常用挂起命令:/bin/bash 1、检查容器启动主…

Maven的理解与应用

Maven使用 一、Maven的含义 Maven是一个构建项目的工具,也是一个管理项目的工具 二、Maven的应用 构建项目 管理依赖 做项目的热部署 基于项目做多模块(modle)的构建 三、Maven的安装 注意:maven本身不需要安装,下…

机器学习笔记:门控循环单元的建立

目录 介绍 结构 模型原理 重置门与更新门 候选隐状态 输出隐状态 模型实现 引入数据 初始化参数 定义模型 训练与预测 简洁实现GRU 思考 介绍 门控循环单元(Gated Recurrent Unit,简称GRU)是循环神经网络一种较为复杂的构成形式…

【网络编程】UDP通信基础模型实现

udpSer.c #include<myhead.h> #define SER_IP "192.168.119.143" #define SER_PORT 7777 int main(int argc, const char *argv[]) {//1.创建int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("socket error");return -1;}//2.连接struct…

element-ui周选择器,如何获取年、周、起止日期?

说明 版本&#xff1a;vue2、element-ui2.15.14 element-ui的日期选择器可以设为周&#xff0c;即typeweek&#xff0c;官方示例如下&#xff1a; 如果你什么都不操作&#xff0c;那么获取的周的值为&#xff1a; value1: Tue Aug 06 2024 00:00:00 GMT0800 (中国标准时间)如…

asp.net医院权限管理系统

医院管理的设计与实现程序 医院管理系统asp.netsqlserver 医院权限管理系统sqlserver 挂号管理 挂号类型管理 挂号登记 挂号查询 药品管理 计量单位管理药 品分类管理 药品编辑 病人资料 病人资料录入 病人资料编辑 病人资料查询 住院管理 住院登记 住院查询办理出院 病例管理 …

鸿蒙HarmonyOS开发:如何灵活运用动画效果提升用户体验

文章目录 一、动画概述1、动画的目的 二、显式动画 (animateTo)1、接口2、参数3、AnimateParam对象说明4、示例5、效果 三、属性动画 (animation)1、接口2、参数3、AnimateParam对象说明4、系统可动画属性4、示例5、效果 一、动画概述 动画的原理是在一个时间段内&#xff0c;…

HAProxy原理及实例

目录 目录 haproxy简介 haproxy的基本信息 haproxy下载并查看版本 haproxy的基本配置信息 global配置 ​编辑多进程和多线程 启用多进程 启用多线程 haproxy开启多线程和多进程有什么用 proxies配置 defaults frontend backend listen socat工具 实例&#xff1a…

Particle Swarm Optimization粒子群算法

目录 1.粒子群算法入门 1.1 简单的优化问题 1.1.1 盲目搜索 1.1.2 粒子群算法流程图 1.1.3 粒子群算法的核心公式 1.1.4 预设参数 1.1.5 初始化粒子的位置和速度 1.1.6 计算适应度 1.1.7 循环体&#xff1a;更新粒子速度和位置 1.1.8 模型改进 2.深入研究粒子群算法 …

CLEFT 基于高效大语言模型和快速微调的语言-图像对比学习

CLEFT: Language-Image Contrastive Learning with Efficient Large Language Model and Prompt Fine-Tuning github.com paper CLEFT是一种新型的对比语言图像预训练框架&#xff0c;专为医学图像而设计。它融合了医学LLM的预训练、高效微调和提示上下文学习&#xff0c;展…

【Linux】线程同步与互斥

目录 线程相关问题 线程安全 常见的线程安全的情况 常见的线程不安全的情况 可重入函数与不可重入函数 常见不可重入的情况 常见可重入的情况 可重入与线程安全的关系 联系 区别 线程同步与互斥 互斥锁 使用 死锁 死锁的四个必要条件 如何避免死锁 条件变量 同…

Unity读取Android外部文件

最近近到个小需求,需要读Android件夹中的图片.在这里做一个记录. 首先读写部分,这里以图片为例子: 一读写部分 写入部分: 需要注意的是因为只有这个地址支持外部读写,所以这里用到的地址都以 :Application.persistentDataPath为地址起始. private Texture2D __CaptureCamera…