首页 > 其他分享 >工作技巧

工作技巧

时间:2023-10-23 17:35:34浏览次数:24  
标签:容器 技巧 -- 工作 使用 镜像 docker Docker

一、python环境部署

1、读取requirements.txt文件,将python包,离线下载到指定目录:mmlab_package

要实现将 requirements.txt 文件中的 Python 包离线下载到指定目录 mmlab_package,您可以按照以下步骤操作:

  1. 创建目录:首先,在您希望下载的位置创建目录 mmlab_package,如果还没有的话。

  2. 使用 pip download:使用 pip 命令的 download 子命令可以下载指定的包及其所有依赖包到本地。您可以使用 -r 标志来指定 requirements.txt 文件,并使用 -d 标志来指定下载目录。

    打开终端,导航到 requirements.txt 文件所在的目录,并运行以下命令:

    pip download -r requirements.txt -d /path/to/mmlab_package
    

    /path/to/mmlab_package 替换为您创建的实际下载目录。

    这将下载 requirements.txt 中指定的所有包及其依赖包到指定目录中。

2、实现pip从指定目录的安装包里离线安装

如果您有一系列已经下载好的 Python 包文件,您可以使用 pip-f(--find-links)选项来指定包的本地目录并进行离线安装。以下是操作步骤:

  1. 准备包文件:将您已经下载好的 Python 包文件放置在一个文件夹中,例如 /path/to/offline_packages

  2. 使用 pip install:在终端中,使用 pip 命令的 -f 选项来指定包文件所在的目录。假设您的包文件在 /path/to/offline_packages,您可以运行以下命令:

    pip install --no-index -f /path/to/offline_packages package_name
    

    package_name 替换为您想要离线安装的包的名称。

    如果您有一个 requirements.txt 文件,其中列出了多个包,您可以运行以下命令来一次性离线安装所有包:

    使用 --no-index 选项:有时,如果 pip 发现了索引缓存,它仍然会尝试从远程源进行安装。您可以尝试使用 --no-index 选项,这将阻止 pip 访问远程源:

    pip install --no-index -f /path/to/offline_packages -r requirements.txt
    

使用docker指令如何将当前环境保存成镜像

ChatGPT

要将当前环境保存为Docker镜像,您可以按照以下步骤进行操作:

  1. 在当前环境中完成所需的配置和安装。
  2. 打开终端或命令行界面。

然后,您可以执行以下指令来创建Docker镜像:

bashCopy code
docker commit <容器ID或容器名称> <镜像名称>:<标签>

在上述指令中,将以下内容替换为适当的值:

  • <容器ID或容器名称>:要保存为镜像的容器的ID或名称。
  • <镜像名称>:要创建的镜像的名称。
  • <标签>:为镜像指定一个标签,例如版本号。例如,您可以使用 latest 作为标签。

例如,假设您正在使用一个名为 my-container 的容器,并且要将其保存为一个名为 my-image 的镜像,可以执行以下指令:

bashCopy code
docker commit my-container my-image:latest

请注意,使用docker commit命令创建镜像有一些限制和注意事项:

  • 此方法创建的镜像可能不会非常高效,因为它会包含容器中所有的文件和状态,包括不必要的文件和临时数据。
  • 最好的做法是使用Dockerfile来定义镜像的构建过程,以便更好地管理镜像的大小和组成。

如果您想更加规范和可管理地创建镜像,建议使用Dockerfile来定义构建过程。这将允许您将环境的配置、软件安装和设置存储在一个可重复的文件中,并以更精细的方式构建镜像。

docker run -it --shm-size='64gb' --name=openmmlab_test --network=host --privileged=true -v /usr/bin/cnmon:/usr/bin/cnmon -v /home/inspur/dataset2/mlu370:/data --device=/dev/cambricon_dev0:/dev/cambricon_dev0 --device=/dev/cambricon_ipcm0:/dev/cambricon_ipcm0 -device=/dev/cambricon_ctl -w /data openmmlab-pytorch-v1.15.0-torch1.9-ubuntu20.04:latest /bin/bash

User

如何进入一个镜像

ChatGPT

2 / 2

要进入一个已创建的Docker镜像,您需要通过创建一个临时容器来实现。以下是进入Docker镜像的步骤:

  1. 首先,确保您已经安装了Docker并且已经运行。
  2. 打开终端或命令行界面。
  3. 使用以下指令创建一个临时容器并进入镜像内部的Shell(例如,使用bash):
bashCopy code
docker run -it --rm <镜像名称>:<标签> /bin/bash

在上述指令中,将以下内容替换为适当的值:

  • <镜像名称>:要进入的镜像的名称。
  • <标签>:镜像的标签,例如版本号。

例如,如果要进入名为 my-image 的镜像,可以执行以下指令:

bashCopy code
docker run -it --rm my-image:latest /bin/bash

这将在一个新的临时容器中启动一个bash Shell,并将您进入镜像的文件系统。您可以在Shell中执行命令和操作,就像在常规的命令行界面中一样。

请注意,使用 --rm 选项将在退出容器时自动删除容器,以避免产生未使用的容器。

一旦您完成了在镜像中的操作,只需输入 exit 命令退出容器即可。

如果您想要持久地修改和保存镜像的更改,最好的做法是在Dockerfile中定义所需的更改,并通过构建新的镜像来应用这些更改。

User

docker exec 与run有什么区别

ChatGPT

docker execdocker run 是两个不同的Docker命令,用于在容器内部执行操作。它们的主要区别在于它们的用途和执行方式:

  1. docker exec

    • 用途:docker exec 用于在正在运行的容器内部执行额外的命令。它适用于已经在运行中的容器,允许您在容器内部执行命令,而无需重新创建容器。

    • 执行方式:您需要指定要在其中执行命令的容器名称或ID,然后提供要执行的命令。

    • 示例:

      bashCopy code
      docker exec -it <容器名称或ID> <命令>
      
  2. docker run

    • 用途:docker run 用于创建并启动一个新的容器。它用于从指定的镜像创建新容器,并且可以在容器创建时运行初始化命令。通常用于启动全新的容器实例。

    • 执行方式:您需要指定要运行的镜像名称和可能的选项,以及要在容器启动时执行的命令。

    • 示例:

      bashCopy code
      docker run -it --rm <镜像名称> <命令>
      

总结区别:

  • docker exec 适用于已经运行的容器,允许您在容器内部执行临时命令。
  • docker run 用于创建新的容器实例,可以用于从指定的镜像启动容器并执行指定的初始化命令。

通常情况下,如果您需要执行临时操作或查看容器内部的内容,可以使用 docker exec。如果您需要创建一个新的容器实例并执行一系列初始化操作,可以使用 docker run

User

如何创建一个镜像

ChatGPT

创建Docker镜像的常见做法是使用Dockerfile文件,其中定义了构建镜像所需的步骤、配置和指令。以下是创建一个基本Docker镜像的一般步骤:

  1. 创建Dockerfile: 在您想要构建镜像的项目目录中,创建一个名为 Dockerfile 的文本文件。在这个文件中,您将定义镜像的构建过程。

  2. 编辑Dockerfile: 使用文本编辑器打开 Dockerfile 并添加以下内容:

    DockerfileCopy code# 使用一个基础镜像作为起点
    FROM <基础镜像名称>:<基础镜像标签>
    
    # 一系列的操作,例如安装软件、复制文件等
    RUN <命令>
    COPY <源路径> <目标路径>
    
    # 暴露容器需要监听的端口
    EXPOSE <端口号>
    
    # 定义容器启动时执行的命令
    CMD <命令>
    

    在上述模板中,将 <基础镜像名称>:<基础镜像标签> 替换为您希望基于的基础镜像,然后在 RUNCOPYEXPOSECMD 指令中添加适当的操作和设置。

  3. 构建镜像: 在包含 Dockerfile 的目录中,打开终端或命令行界面,执行以下命令来构建镜像:

    bashCopy code
    docker build -t <新镜像名称>:<标签> .
    

    在上述命令中,将 <新镜像名称>:<标签> 替换为您想要为新镜像指定的名称和标签。注意末尾的 . 表示当前目录,这是因为Docker将在当前目录查找 Dockerfile。

  4. 等待构建完成: Docker将按照Dockerfile中定义的步骤开始构建新的镜像。这可能需要一些时间,具体时间取决于您的Dockerfile中的操作和基础镜像的大小。

  5. 使用新镜像: 构建完成后,您可以使用以下命令来运行您新创建的镜像的容器:

    bashCopy code
    docker run -it --rm <新镜像名称>:<标签>
    

    这将启动一个新的容器,并根据Dockerfile中的定义进行初始化。

请注意,这只是一个简单的示例,Dockerfile还支持许多其他指令和选项,可以根据需要进行扩展和自定义。如果您想要创建更复杂的镜像,可以在Dockerfile中包含更多操作和设置。

User

在镜像中如何实现目录的挂载

ChatGPT

在Docker镜像中实现目录的挂载通常是通过在容器运行时使用卷(Volume)来完成的。Docker卷允许将主机文件系统中的目录或文件与容器内部的目录或文件进行关联,从而实现持久性的数据共享和交换。

以下是在Docker中如何实现目录的挂载的步骤:

  1. 创建卷: 在运行容器时,您可以使用 -v--volume 标志来创建一个卷,并将主机文件系统中的目录与容器内的目录关联起来。例如:

    bashCopy code
    docker run -it -v /主机路径:/容器路径 <镜像名称>:<标签>
    

    在上述命令中,将 /主机路径 替换为主机上的目录路径,将 /容器路径 替换为容器内部的目录路径。

  2. 示例: 假设您有一个名为 my-app 的应用程序,其配置文件存储在主机的 /app/config 目录中。您可以使用以下命令来运行一个基于镜像的容器,并将主机的 /app/config 目录挂载到容器内的 /app/config 目录:

    bashCopy code
    docker run -it -v /app/config:/app/config my-image:latest
    

    这样,在容器内部的任何更改都将在主机上反映出来,同时容器内和主机之间的数据共享也将变得持久。

  3. 使用 Docker Compose: 如果您更喜欢使用Docker Compose来管理容器和卷,您可以在 docker-compose.yml 文件中定义挂载的卷。以下是一个简单的示例:

    yamlCopy codeversion: '3'
    services:
      myapp:
        image: my-image:latest
        volumes:
          - /app/config:/app/config
    

    在上述示例中,volumes 部分将容器内的 /app/config 目录与主机上的 /app/config 目录进行关联。

挂载卷允许您在容器和主机之间共享数据,并且在容器重启或替换时可以保留数据。这在实现持久性数据存储、配置文件共享等方面非常有用。

Docker常见的操作涵盖了构建、运行、管理和维护容器和镜像。以下是一些常见的Docker操作:

  1. 构建镜像
    • 使用 docker build 命令根据Dockerfile构建镜像。
    • 例如:docker build -t my-image:latest .
  2. 运行容器
    • 使用 docker run 命令创建并运行一个容器。
    • 例如:docker run -d --name my-container my-image:latest
  3. 查看容器
    • 使用 docker ps 查看运行中的容器。
    • 使用 docker ps -a 查看所有容器,包括已停止的。
  4. 进入容器
    • 使用 docker exec 进入正在运行的容器内部。
    • 例如:docker exec -it my-container /bin/bash
  5. 挂载卷
    • 使用 -v--volume 标志在容器和主机之间挂载卷。
    • 例如:docker run -v /host/path:/container/path my-image:latest
  6. 停止容器
    • 使用 docker stop 命令停止正在运行的容器。
    • 例如:docker stop my-container
  7. 删除容器
    • 使用 docker rm 命令删除一个或多个容器。
    • 例如:docker rm my-container
  8. 删除镜像
    • 使用 docker rmi 命令删除一个或多个镜像。
    • 例如:docker rmi my-image:latest
  9. 查看镜像
    • 使用 docker images 查看本地的Docker镜像列表。
  10. Docker Compose
    • 使用 Docker Compose 来管理和定义多容器应用的服务、网络和卷。
    • 编写 docker-compose.yml 文件来描述应用的组成和配置,然后使用 docker-compose 命令管理多容器应用。
  11. 清理不使用的资源
    • 使用 docker system prune 清理不再使用的容器、镜像和卷。
    • 注意:此命令将清理掉不再使用的资源,因此请谨慎使用。

这只是一些常见的Docker操作,实际应用中可能会涉及更多操作,根据您的需求和场景进行调整。

标签:容器,技巧,--,工作,使用,镜像,docker,Docker
From: https://www.cnblogs.com/polly333/p/17783021.html

相关文章

  • MounRiver使用技巧及配置7
    1、关于MRS环境下nop指令的用法关于nop指令的用法,使用之前可按照下图进行宏定义,具体如下图:#define nop()   asmvolatile("nop") 2、于MRS环境下将数据放在RAM指定位置报错问题程序编译报错:cannotmovelocationcounterbackwards报错原因:链接的过程中,出现这种问......
  • 数字政府工委会启动全国调研工作
    2023年9月9日,第一届数子政府建设服务论坛暨数字政府建设服务工作委员会成立大会在北京召开。中国电子工业标准化技术协会副理事长韩俊和中国电子技术标准化研究院副院长孙文龙分别代表主办方致辞,并一同启动了中国电子工业标准化技术协会数字政府建设服务工作委员会(简称数字政府......
  • UM2010 是一款工作于 200MHz~960MHz 范围内的低功耗、高性能、单片集成的(G)FSK/OOK无
    UM2010是一款工作于200MHz~960MHz范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发机芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器,只需配备简单、低成本的外围器件就可以获得良好的收发性能。芯片支持灵活可设的数据包格式,支持自动应答和自动重......
  • 谷歌搜索最实用技巧50条
    谷歌搜索最实用技巧50条使用双引号来搜索一个短语,例如:"人生苦短"使用减号来排除一个词,例如:巧克力-糖使用星号来替代一个词,例如:最好的*是什么?搜索一个特定网站:site:example.com搜索关键词搜索一个特定文件类型:filetype:pdf关键词搜索与关键词相关的定义:define:关键词......
  • ChatGpt提问实用小技巧
    ChatGpt提问实用小技巧1.“Linux终端”“我希望你充当一个linux终端。我会输入命令,你会回复终端应该显示的内容。我希望你只回复一个唯一代码块内的终端输出,没有别的。不要写解释.除非我指示你这样做,否则不要输入命令。当我需要用英语告诉你一些事情时,我会通过将文本放在大......
  • 【VMware篇】10-vCenter升级小技巧(一)之命令行升级
    第1章前言  为什么要升级vCenterserver?1.新功能和增强功能:升级vCenterServer可以让您拥有最新的功能和增强功能。每个vCenterServer版本都会引入新的功能和改进,这些功能可以提升管理和监控虚拟化环境的能力,增强安全性、性能和可靠性等方面。2.修复漏洞和安全问题:升级vCenter......
  • 轻松合并Excel工作表:Java批量操作优化技巧
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在Excel中设计表单时,我们经常需要对收集的信息进行统计分析。例如,学校给老师统计课时,医院给医护人员统计班次等。传统的手工方式需要......
  • 将现有的未提交工作移至Git中的新分支
    内容来自DOChttps://q.houxu6.top/?s=将现有的未提交工作移至Git中的新分支我开始了一些新功能的工作,编写了一段时间后,我决定这个功能应该独立成一个分支。如何将现有的未提交更改移动到一个新分支并重置当前分支?我想重置当前分支,同时保留新功能上的现有工作。2020年更新......
  • 工作设备虚拟化的意义
    Google不争工作设备的费用,包括应用商城费用也是一次性,比Apple的年收要慈祥得多。firebase提供云端数据服务,包括数据API,以及用户数据管理,测试服务。但仍有1.6万多种android手机类型,大部分的手机厂商应该在中国,假设有100家,每家20款,也只有2000款,剩下的数据差距在哪里?  ......
  • Spring Boot中的过滤器、拦截器、监听器技巧汇总:让你快速成为大神
    环境说明:Windows10+Idea2021.3.2+Jdk1.8+SpringBoot2.3.1.RELEASE前言在Web应用程序中,我们经常需要处理请求和响应。有时,我们需要应用于所有请求和响应的通用逻辑。这就是过滤器、拦截器和监听器的用武之地。它们可以帮助我们在请求和响应被处理之前或之后执行一些通用逻......