docker与大模型(口语化原理和实操讲解)
文章目录
- 一、镜像images
- 1)下载安装
- 2)docker images相关命令(保存、删除、上传、别名、搜索镜像)
 
- 二、容器container
- 1)展现所有在跑的容器服务ps
- 2)start /restart / kill / stop /rm
- 3)exec /cp
- 4)run/create
- 5)logs/stats/top
- 6)commit
- 7)attach
 
- 三、dockerfile
- 1)基本概念和常用指令
- 2)dockerfile示例
- 3)构建镜像命令
 
- 四、volume
- 五、network
- 六、docker-compose
- 七、proxy
 
一、镜像images
-  问题 
 本地部署后给别人,环境不同带来的麻烦别人部署不了
-  解决问题思路示意 
  
-  内容 
 ①images:二进制文件,可以认为是个模板,可以生成container,container是实际在跑的程序
 ②repo:仓库,存储很多人传的不同images镜像,类似于github一样
 ③dockerfile:从自己本地生成images的过程
1)下载安装
①官网下载
 
 ②查看docker是否装好开起来
//通过 docker ps 命令,用户可以快速查看当前运行的容器,了解它们的状态和基本信息,这对于管理和监控 Docker 容器非常有用。
docker ps

 输出格式
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS        PORTS                    NAMES
CONTAINER ID:容器的唯一标识符。
 IMAGE:容器使用的镜像。
 COMMAND:容器启动时运行的命令。
 CREATED:容器创建的时间。
 STATUS:容器的当前状态,如运行中(Up)、已停止(Exited)等。
 PORTS:容器暴露的端口和映射到主机的端口。
 NAMES:容器的名称。
2)docker images相关命令(保存、删除、上传、别名、搜索镜像)
- 备注
 不知道命令的作用,就用下面命令打印出来
docker 命令  --help

-  具体命令展示 
 ①images / images ls
 ②search 搜索镜像\pull 拉取镜像
 ③tag \ push \login \ logout
 ④rmi 删除镜像
 ⑤save \load
 ⑥history \ inspect
-  具体命令效果 
 ①images / images ls
标签
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
REPOSITORY:镜像所属的仓库名称。
 TAG:镜像的标签。
 IMAGE ID:镜像的唯一标识符。
 CREATED:镜像创建的时间。
 SIZE:镜像的大小。
 
②search 搜索镜像\pull 拉取镜像
在repo上面搜索hello-world
 
 拉取镜像
(若指定版本,则加上:1.0)
docker  pull  rancher/hello-world

拉取过来后,用docker images看本地镜像,可以看到本地已经有这个rancher的hello-world了
 
③tag \ push \login \ logout
 tag给镜像起别名,命令用于给本地的 Docker 镜像添加一个新的标签。标签是镜像的一个别名,可以用来标记镜像的不同版本或者用途。通过 docker tag 命令,用户可以将一个镜像标记为属于某个特定的仓库或者版本,这对于管理和分发 Docker 镜像非常有用。
docker  tag  标签名字 账号名字/库名字:版本号docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

 push上传镜像
 

④rmi 删除镜像
docker rmi 镜像名字

⑤save 保存镜像 \ load
离线要保存镜像的话
docker save -o myimage.tar myimage

 解压缩
docker load -i hw.tar

⑥history \ inspect
history看镜像构建的历史
 
 inspect看对应镜像的信息
 
二、容器container
容器命令讲解
1)展现所有在跑的容器服务ps
docker ps -a //-a意思是all,所有的

2)start /restart / kill / stop /rm
①stop 停止某个容器的服务
 
 ②start开始某个容器的服务器
 
 ③restart 重启某个容器
 
 ④删除某个容器rm(不推荐使用,容易出问题)
 
3)exec /cp
①exec 进入到某个容器里面(已经有这个容器了)
 -i: 可交互的
 t:终端
 
②把某个文件复制到容器里面去
 
 或是把容器内的文件复制到当前目录下
 
4)run/create
①run运行一个镜像
 
 后台守护进程运行一个容器
docker run -d 4b1

如果想让容器停掉后就销毁了
docker run  --rm   -d  4b1

 ②create创建一个容器,但是不让他跑起来
5)logs/stats/top
①logs 监控容器输出
 
 ②stats 看运行中的容器占用的资源
 
 ③top查看容器占用
 
6)commit
①commit 把容器生成一个镜像(不建议这么做,这么做的话只能生成黑盒)

7)attach
附加到一个容器上面,但是CTRL+C就会杀掉容器
 
三、dockerfile
1)基本概念和常用指令
- 基本概念
 ①dockerfile:一个文本文件,其中包含了一系列指令,Docker 引擎根据这些指令构建镜像
 ②镜像:Dockerfile 构建后生成的可执行软件包,包含了运行应用所需的代码、库、环境变量等。
 ③层:Docker 镜像由多个层(Layer)构成,每一条指令都会创建一个新的层。层是不可变的,这使得 Docker 镜像更为高效和可重用。
- 常用指令
FROM	指定基础镜像,Dockerfile 的第一行通常是此指令。
MAINTAINER	指定维护者信息(不推荐使用,使用 LABEL 替代)。
LABEL	添加元数据到镜像,例如作者、版本等。
RUN	在构建镜像时执行命令(例如安装软件包)。
CMD	指定容器启动时要执行的命令,可以被 docker run 命令覆盖。
ENTRYPOINT	设置容器启动时的默认命令,不能被 docker run 轻易覆盖。
COPY	将文件或目录从主机复制到镜像中。
ADD	类似于 COPY,但还支持 URL 和自动解压压缩文件。
ENV	设置环境变量。
EXPOSE	声明容器监听的端口,但并不会实际映射到主机。
VOLUME	创建挂载点,用于持久化数据。
WORKDIR	设置工作目录,后续指令将在此目录下执行。
ARG	定义构建时可用的变量。
USER	指定运行时的用户。
SHELL	指定默认的 shell,用于运行后续指令

 ①FROM使用举例:表示基于什么环境做镜像
 1)以特定版本的 CentOS 为基础:FROM centos:7,表示以 CentOS 7 版本的镜像作为基础来构建新的镜像,该镜像中包含了 CentOS 7 的操作系统环境及相关的软件包管理系统等基础组件。
 2)以 Alpine Linux 为基础:FROM alpine:3.18,Alpine 是一个轻量级的 Linux 发行版,常用于构建小型、高效的容器镜像。这里以 Alpine 3.18 版本为基础,适合对镜像大小有严格要求的场景,如构建简单的网络服务或命令行工具容器等
 3)以特定版本的 Java 运行时环境镜像为基础:FROM openjdk:11-jdk,此指令以包含 Java 11 开发工具包的 OpenJDK 镜像为基础,适用于构建 Java 应用程序的容器化环境,镜像中已经预安装了 Java 运行时和开发所需的相关库等,方便直接在容器内运行和开发 Java 应用。
 4)以 Python 为基础镜像:FROM python:3.11,slim 版镜像去除了一些不必要的软件包和文件,使得镜像体积大幅减小。这对于容器化部署非常有利,尤其是在资源受限的环境中,如小型服务器、边缘计算设备等,可以更高效地利用存储空间,同时也能加快镜像的下载和部署速度
 5)以 C++ 为基础镜像:对于 C++,通常没有像 Python 那样直接对应版本的官方基础镜像,但可以选择一些基于 Linux 发行版且预安装了 C++ 编译环境的镜像作为基础:FROM ubuntu:20.04
可以看到有自带的环境(没有的话docker会自动下载,有则优先从本地寻找)
②WORKDIR 设置工作目录,后续指令将在此目录下执行。
 (应该把所有代码放到这个路径下面去,然后执行的时候应该从这个路径作为项目的根路径去执行指令)
 ③COPY 将文件或目录从主机复制到镜像中。
#表示将当前路径的所有文件复制到/app/下面
COPY .   /app/
④RUN 在构建镜像时执行命令(例如安装软件包)。
#安装flask包
RUN pip install flask
⑤CMD 容器要启动的时候要执行的命令
CMD ["python", "app.py"]
⑥ENTRYPOINT 设置容器启动时的默认命令,不能被 docker run 轻易覆盖,可以看到加参数2还是执行了 echo 1 然后2,不会被打断
 
 而CMD会被打断,从而有报错(一杯覆盖)
 
 替代的效果
 
 常用会这么用:(不填,参数默认1,填参数那就是所填的参数,占位符的作用)
 
 ⑦ADD 类似于 COPY,但还支持 URL 和自动解压压缩文件。(一般不会用来解压包,一般是RUN tar -xvf )
#拷贝后解压
COPY   .   /app/
ADD  ./docs.tar.gz  /app/
⑧LABEL \ EXPOSE \ VOLUME
 
 1)LAYBEL添加元数据到镜像,例如作者、版本等。就是注释
 2)expose 声明容器监听的端口,但并不会实际映射到主机,把容器的5000端口暴露出来,这可以看到容器外面调用的端口是5001
 
3)VOLUME 创建挂载点,用于持久化数据。就是-v的参数,可以看到下面./docs目录与容器内也就是/app/docs挂载在一起了
 
 但是这样有误删除的风险
 一般是创建卷吗,如下(这个卷是docker自己维护的,可以跨容器进行通信)
 
⑨ARG与ENV
 ARG 构建容器中使用的环境变量,
 ENV 运行中使用的环境变量,
env查看环境变量
 
 可以在构建的时候传参数来修改
 
 ⑩HEALTHCHECK :定时任务,检测容器是否运行
 
 不断执行这个命令,没有反馈就表示错误了(10s执行一次,超时3秒,超时连续3次)
2)dockerfile示例
FROM python:3.10-slim LABEL maintainer="panhu"
LABEL version=1.0
LABEL desc="A docker bigv"WORKDIR /appARG APP_VER=1.0
ENV APP_ENV=1.0COPY . /app/
EXPOSE 5000ENV FLASK_RUN_HOST=0.0.0.0
ENV FLASK_RUN_PORT=5000HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD curl --fail http://localhost:5000/ || exit 1RUN pip install flaskCMD ["python", "app.py"]
3)构建镜像命令
#起别名d1
docker build -t my-app .
四、volume
五、network
六、docker-compose
七、proxy
相关文章:
 
docker与大模型(口语化原理和实操讲解)
文章目录 一、镜像images1)下载安装2)docker images相关命令(保存、删除、上传、别名、搜索镜像) 二、容器container1)展现所有在跑的容器服务ps2)start /restart / kill / stop /rm3)exec /cp4)run/create…...
 
Linux之vim模式下全选命令
在Linux系统中,使用Vim编辑器进行全选操作可以通过以下几种方式实现: 1.使用键盘快捷键 按下 ”ggVG”(先按下”g”,再按下”g”,再按下”V”,最后按下”G”)可以全选当前文件内容。其中 ”g…...
云原生周刊:Kubernetes v1.32 要来了
开源项目推荐 Woodpecker Woodpecker 是一款轻量级且功能强大的 CI/CD 引擎,以其高度可扩展性和易用性著称。它支持多种版本控制系统与编程语言,能够灵活适配不同开发流程,帮助团队实现高效的持续集成与交付。无论是个人项目还是大型团队&a…...
# JVM学习
JVM JVM是什么? Java虚拟机(JVM) 是一个抽象的计算机,它是一个运行时环境,用于执行Java字节码或编译后的Java程序。JVM屏蔽了底层操作系统的差异,使得Java程序可以在任何支持JVM的操作系统上运行。 JVM能…...
【代码随想录day33】【C++复健】62.不同路径;63. 不同路径 II;343. 整数拆分;96.不同的二叉搜索树
感觉dp的题真的很适合背,当然不是死记硬背,而是当做一种模板题,出来一道新的题就往模板题上面去靠,如果套对模板的话剩下的事情其实就简单了。所以只要看一遍解法知道大致思路其实就够了,毕竟大部分dp的代码也不算难写…...
 
《勇者斗恶龙3:HD-2D重制版》找幽灵船攻略分享
《勇者斗恶龙3:HD-2D重制版》中的幽灵船是游戏里非常独特的一个区域,而想要找到幽灵船的话还是比较麻烦的,首先是听到关于幽灵船在世界海域上航行的传闻,包括在海盗巢穴中,但幽灵船的出现有一些具体条件。 勇者斗恶龙3…...
基于 MATLAB 的模拟退火算法详解及实现
以下是一篇更详细的关于 模拟退火算法 (Simulated Annealing) 的 MATLAB 实现的教程和代码示例,涵盖基本概念、核心思想和代码实现。 一、模拟退火算法简介 模拟退火算法(Simulated Annealing,简称 SA)是一种随机优化算法&#x…...
MQTT 服务器常用的有哪些?
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,常用于物联网(IoT)设备之间的通信。以下是一些常用的 MQTT 服务器(也称为 MQTT Broker): 1.Eclipse Mosqui…...
 
【android USB 串口通信助手】stm32 源码demo 单片机与手机通信 Android studio 20241118
android 【OTG线】 接 下位机STM32【USB】 通过百度网盘分享的文件:USBToSerialPort.apk 链接:https://pan.baidu.com/s/122McdmBDUxEtYiEKFunFUg?pwd8888 提取码:8888 android 【OTG线】 接 【USB转TTL】 接 【串口(下位机 SMT32等)】 需…...
汽车资讯新探索:Spring Boot技术引领
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足,创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分&…...
简单的MCU与FPGA通过APB总线实现通讯(fpga mcu APB):乘法器为例
测试平台: GW1N4器件内置 M1内核;并且可以设置 APB总线与fpga 逻辑进行交互; 框图: +---------------------+ | | | M1 Microprocessor | <-----------------+ | | | | +-----------------…...
 
css uniapp背景图宽度固定高度自适应可以重复
page {height: 100%;background-image: url(https://onlinekc.a.hlidc.cn/uploads/20241115/350f94aaf493d05625a7ddbc86c7804e.png);background-repeat: repeat;background-size: contain;} 如果不要重复 把background-repeat: repeat;替换background-repeat: no-repeat;...
深度学习--优化器
笔记内容侵权联系删 优化器 在梯度下降算法中,有各种不同的改进版本。在面向对象的语言实现中,往往把不同的梯度下降算法封装成一个对象,称为优化器。 算法改进的目的,包括但不限于: 加快算法收敛速度; 尽量避过或冲过局部极值; …...
【嵌入式】关于push老仓库到新仓库的方法
1. 背景 公司项目经常会有需要从开源项目中镜像代码过来的活,所以常常会在自己的服务器上创建一个对应的仓库,然后使用命令将期push过去。为方便日后抄命令,这里记录一下使用的命令。 2. 操作步骤 2.1. 已下载的代码push 特别提醒: 使用此脚本前请确保你修改的代码已保存…...
 
从线下到线上,上门洗衣服务如何实现智能化升级?
在现代快节奏生活的推动下,上门洗衣服务作为一种新兴的服务模式正逐渐崭露头角。它以其便捷性和创新性,改变了传统洗衣行业的格局,为消费者提供了全新的选择,同时也为洗衣品牌带来了新的机遇与挑战。 一、上门洗衣服务的市场现状1…...
SQL字段来源表的解析
测试例子: SELECT e.NAME, d.DEPT_NAME,d.DEPT_ID,EMP_ID,100EMP_ID100 FROM EMP e JOIN DEPT d ON e.DEPT_ID d.DEPT_ID WHERE e.EMP_ID IN (SELECT EMP_ID FROM EMP WHERE DEPT_ID 10) 代码示例: package com.test; import org.apache.calcite.jd…...
理解 Python 解释器:CPython 与 IPython 的比较及选择指南
理解 Python 解释器:CPython 与 IPython 的比较及选择指南 在选择适合自己需求的 Python 解释器时,理解 CPython 和 IPython 之间的主要差异至关重要。本文将详细解释 CPython 和 IPython 的特性、优势和适用场景,以帮助用户做出明智的选择。…...
Java NIO 深度解析:构建高效的 I/O 操作
在 Java 编程领域,I/O 操作一直是至关重要的部分,它直接影响着应用程序的性能和响应能力。Java NIO(New I/O)作为传统 I/O 的增强版本,为处理大量并发连接和高效的数据传输提供了更强大的工具和机制。本文将深入探讨 J…...
 
总结拓展十六:特殊采购业务——VMI采购模式
1、VMI的定义 VMI采购模式(Vendor Managed Inventory)是一种合作性策略,旨在通过供应商管理库存,使供应链中的企业和供应商双方都能获得最低成本。在这种模式下,供应商根据共享的用户企业库存和实际耗用数据&#x…...
vue2 + iview(view-design) 中封装使用 vxe-table 处理表格渲染大量数据卡顿现象
今天遇到需求,iview组件分页每页100页时候页面卡顿现象严重,改造为使用vxe-table cell-mouseenter"handleCellMouseEnter" cell-mouseleave"handleCellMouseLeave" 这两个用来处理vxe-table 内容过多鼠标悬浮上去滚动 tooltip直接…...
 
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
 
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
 
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
 
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
 
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
 
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
 
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

