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

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

http://www.lryc.cn/news/486962.html

相关文章:

  • Linux之vim模式下全选命令
  • 云原生周刊:Kubernetes v1.32 要来了
  • # JVM学习
  • 【代码随想录day33】【C++复健】62.不同路径;63. 不同路径 II;343. 整数拆分;96.不同的二叉搜索树
  • 《勇者斗恶龙3:HD-2D重制版》找幽灵船攻略分享
  • 基于 MATLAB 的模拟退火算法详解及实现
  • MQTT 服务器常用的有哪些?
  • 【android USB 串口通信助手】stm32 源码demo 单片机与手机通信 Android studio 20241118
  • 汽车资讯新探索:Spring Boot技术引领
  • 简单的MCU与FPGA通过APB总线实现通讯(fpga mcu APB):乘法器为例
  • css uniapp背景图宽度固定高度自适应可以重复
  • 深度学习--优化器
  • 【嵌入式】关于push老仓库到新仓库的方法
  • 从线下到线上,上门洗衣服务如何实现智能化升级?
  • SQL字段来源表的解析
  • 理解 Python 解释器:CPython 与 IPython 的比较及选择指南
  • Java NIO 深度解析:构建高效的 I/O 操作
  • 总结拓展十六:特殊采购业务——VMI采购模式
  • vue2 + iview(view-design) 中封装使用 vxe-table 处理表格渲染大量数据卡顿现象
  • 初学者指南:知识库问答(KBQA)多跳路径的核心与应用
  • 创建springboot+vue项目相关配置问题
  • 基于AOA算术优化的KNN数据聚类算法matlab仿真
  • 【机器学习】在泊松分布中,当λ值较大时,其近似正态分布的误差如何评估?
  • ABAP开发-面向对象开发_2
  • 微信小程序-prettier 格式化
  • 241118学习日志——[CSDIY] [ByteDance] 后端训练营 [06]
  • Android WMS概览
  • 新一代API开发工具,让API调试更快 更简单
  • 友元类和友元函数
  • Sulfo-Cy5-Iodoacetamide能够发出明亮的荧光信号,使得生物样本的精细结构得以清晰呈现