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

docker学习:dockerfile和docker-compose

学习如何使用dockerfile

以下内容,部分来自gpt生成,里面的描述可能会出现问题,但代码部分,我都会进行测试。

1. 需求

对于一个docker,例如python,我们需要其在构建成容器时,就有np。有以下两种方法:

  1. pull python,并run后,在里面pip install numpy,随后对这个容器进行打包保存
  2. 在pull python时,就将pip install numpy一起运行,run的时候,就有numpy了。

2. dockerfile和docker-compose

说明:为了实现上述的功能,dockerfile用于定义并构建单一Docker镜像的指令脚本,即pull;docker-compose用于定义和运行多容器Docker应用程序的工具和配置文件,提供统一的方式run。
Dockerfile:
目的:Dockerfile用于定义单个容器的内容和配置。它提供了一种方式来从头开始创建一个新的Docker镜像,或基于现有的Docker镜像定制一个新的镜像。
主要操作:定义、构建和配置一个Docker容器。 示例用途:安装软件、设置环境变量、定义工作目录、设置入口点等。 用法:使用docker
build命令从Dockerfile创建一个新的Docker镜像。
docker-compose:
目的:docker-compose用于定义和运行多容器Docker应用程序。它提供了一个声明式的方式来定义一组相关联的容器、它们之间的网络、卷和其他配置。
主要操作:定义、连接和管理多个容器。
示例用途:在本地开发环境中运行多服务应用(如前端、后端和数据库)、设置服务之间的网络连接、定义和挂载卷等。
用法:使用docker-compose up命令根据docker-compose.yml文件启动服务。

3. Dockerfile

使用Dockerfile,实现python with numpy

  1. 创建一个Dockerfile,名字需要严格要求
# 使用python:latest作为基础镜像
FROM python:latest# 安装numpy
RUN pip install numpy
  1. 将上述内容创建一个镜像
# docker build -t image-name:latest <Dockerfile的路径>
docker build -t py-with-np:v1 .
# 使用 docker images查看已有镜像
  1. 运行上述docker
docker run -it -v /opt/appdata/python:/py --name pytest py-with-np:v1
# 使用docker ps -a查看运行的容器

4. docker-compose

上述的dockerfile,只能先创建images,再运行,并不优雅。
docker-compose就是解决这个问题的

  1. 创建 Dockerfile:
# 使用python:latest作为基础镜像
FROM python:latest# 安装numpy
RUN pip install numpy
  1. 创建 docker-compose.yml:

简单版本,运行后直接启动python

version: '3'services:hello-service:build:context: .dockerfile: Dockerfileimage: py-with-np:v6volumes:- /opt/appdata/python:/pyports:- "8080:8080"command: python /py/test.pystdin_open: truetty: true

解释
: build: . 指示 docker-compose 根据当前目录下的 Dockerfile 构建 Docker 镜像。 image:
py-with-np:v1 指定构建的镜像的名称和标签。 volumes 是一个卷映射,与之前 docker run 命令中的 -v
参数相同。
如果你想在 docker-compose 中运行容器并保持其交互性,例如一个交互式 Python shell,你应该在 docker-compose.yml 文件中添加一个 stdin_open 和 tty 属性,这两个属性都设置为 true。这与 docker run 的 -i 和 -t 选项相对应。

  1. 使用 docker-compose 运行容器:

首先,在命令行中转到 docker-compose.yml 所在的目录。接着,使用以下命令启动服务:

docker-compose up --build

docker-compose up 启动服务。
–build 参数确保在运行服务之前构建或重新构建服务的镜像。
在这里插入图片描述

4. 问题

-it怎么办?
由于在docker-compose.yml中添加了 stdin_open: true tty: true,但仍然不能够启动
只能用用docker run -it 镜像名,暂且用用了

5. 删除不必要的image和container

# 查看容器
docker ps -a
# 停止容器
docker stop ID
# 删除容器
docker rm ID
# 查看镜像
docker images
# 删除镜像
docker rmi ID  # 但是可能两个images有相同的ID
docker rmi name:V1

相关文章:

docker学习:dockerfile和docker-compose

学习如何使用dockerfile 以下内容&#xff0c;部分来自gpt生成&#xff0c;里面的描述可能会出现问题&#xff0c;但代码部分&#xff0c;我都会进行测试。 1. 需求 对于一个docker&#xff0c;例如python&#xff0c;我们需要其在构建成容器时&#xff0c;就有np。有以下两种方…...

Pycharm 配置python项目本地运行环境

1.打开Pycharm,打开Setting 2. 新建本地环境 3.如果报错如上图所示&#xff0c;请通过cmd来新建本地环境&#xff0c;具体步骤如下 在对应的代码路径下&#xff0c;通过virtualenv venv来创建虚拟路径 安装好之后&#xff0c;安装对应的依赖包即可 pip3 install -r ./require…...

DevEco Studio中如何设置HarmonyOS/OpenHarmony应用开发

DevEco Studio内置有帮助中心&#xff0c;初学HarmonyOS 及OpenHarmony应用、元服务的开发者&#xff0c;通过内置的帮助中去系统的学习相关内容&#xff0c;是边练边学&#xff0c;快速上手的最佳方式。 一、帮助 二、快速开始 三、HarmonyOS应用、元服务开发相关 四、OpenHa…...

Matlab图像处理-三原色

三原色 根据详细的实验结果&#xff0c;人眼中负责颜色感知的细胞中约有65%对红光敏感&#xff0c;33%对绿光敏感&#xff0c;只有2%对蓝光敏感。正是人眼的这些吸收特性决定了所看到的彩色是一般所谓的原色红&#xff08;R&#xff09;、绿&#xff08;G&#xff09;和蓝&…...

QLExpress代码解读,运行原理解析

简介&#xff1a; 本文针对上图的功能详细图&#xff0c;进行逐个的简单介绍&#xff1a;代码入口、代码的主要逻辑和算法。 调用代码实例 //本文以helloworld案例,开启了两个打印日志的参数&#xff0c;实际使用通常不建议打开。 boolean printParseLog true;//语法分析日志开…...

M1 Mac创建虚拟环境遇到的问题

报错信息 PackagesNotFoundError: The following packages are not available from current channels: python3.7 Current channels: https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/osx-arm64 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch htt…...

flutter 与H5交互

主要是flutter内嵌H5页面&#xff0c;之后就是两者之间的交互 flutter&#xff1a;webview_flutter 4.2.2 H5&#xff1a; uniapp 1、flutter向H5传参 //在flutter 中的web页面&#xff0c;可在onPageFinished中向H5进行传参onPageFinished: (String url) async {WebViewCont…...

【Java 基础篇】Java类型通配符:解密泛型的神秘面纱

在Java中&#xff0c;类型通配符&#xff08;Type Wildcard&#xff09;是泛型的重要概念之一。它使得我们能够更加灵活地处理泛型类型&#xff0c;使代码更通用且可复用。本文将深入探讨Java类型通配符的用法、语法和最佳实践。 什么是类型通配符&#xff1f; 类型通配符是一…...

《极客时间:如何成为学习高手》【方法论】

本篇博客是学习过程中的笔记整理和个人思考。原文链接&#xff1a;https://time.geekbang.org/column/intro/100081501?tabcatalog 底层逻辑01&#xff5c;如何减少对学习的排斥和厌恶心理&#xff0c;使其变得相对愉悦&#xff1f;02&#xff5c;学会这 4 点&#xff0c;你也…...

如何处理ChatGPT在文本生成中的语法错误和不合理性?

ChatGPT是一种强大的自然语言处理模型&#xff0c;但它并不是完美的&#xff0c;有时会产生语法错误或不合理的文本。这些问题可能会影响模型生成的内容的质量和可信度。在处理ChatGPT中的语法错误和不合理性时&#xff0c;有许多方法和策略可以采用&#xff0c;以下是一些详细…...

GitHub常用命令

1. 将本文件夹初始化为一个本地git仓库 git init 2. 将github的远程克隆到本地 git clone XXX 3. 添加所有文件到暂存区 git add . 4. 删除工作区文件 git rm [file] 5. 提交 git commit -m "提交信息&#xff08;比如&#xff1a;my first commit file&#xff…...

【Linux学习笔记】 - 常用指令学习及其验证(上)

前言&#xff1a;本文主要记录对Linux常用指令的使用验证。环境为阿里云服务器CentOS 7.9。关于环境如何搭建等问题&#xff0c;大家可到同平台等各大资源网进行搜索学习&#xff0c;本文不再赘述。 由于本人对Linux学习程度尚且较浅&#xff0c;本文仅介绍验证常用指令的常用…...

火山引擎边缘云助力智能科技赋予生活更多新意

当下&#xff0c;先进的科学技术使得我们的日常生活变得快捷、舒适。大到上百层智能大厦、高端公共场所、社会智能基础设施&#xff0c;小到智能家居监控、指纹密码锁等&#xff0c;在这个充满想象力的时代&#xff0c;科技以更加智能化的方式改变和守护我们的生活。 引入智能…...

【无标题】CTreeCtrl更改-/+展开按钮颜色

#pragma once #include <list>// CMyTreeCtrlclass CMyTreeCtrl : public CTreeCtrl {private:std::list<std::...

【深度学习】 Python 和 NumPy 系列教程(十九):Matplotlib详解:2、3d绘图类型(5)3D等高线图(3D Contour Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 3D线框图&#xff08;3D Line Plot&#xff09; 2. 3D散点图&#xff08;3D Scatter Plot&#xff09; 3. 3D条形图&#xff08;3D Bar Plot&#xff09; 4. 3D曲面图…...

Java ZGC 算法调优

ZGC 是一种专门的垃圾收集器&#xff0c;专注于管理大型堆并最大限度地减少 Java 应用程序中的暂停。它解决了内存密集型工作负载和一致的响应时间至关重要的场景中垃圾收集的挑战。利用并发处理能力和先进算法&#xff0c;ZGC 为优化 Java 应用程序的性能提供了有效的解决方案…...

【海思SS626 | 开发环境】编译整个SDK全过程以及问题汇总

目录 一、概述二、解压SDK&#xff0c;打补丁三、安装交叉编译工具✨3.1 安装 aarch64-mix410-linux.tgz✨3.2 安装 cc-riscv32-cfg11-musl-20220523-elf.tar.gz✨3.3 检查工具链版本&#xff0c;打印版本则表示安装成功 四、安装软件包✨4.1 安装软件包✨4.2 安装mtd-utils的依…...

83 # 静态服务中间件 koa-static 的使用以及实现

静态服务中间件&#xff1a;koa-static 中间件可以决定是否向下执行&#xff0c;如果自己可以处理&#xff0c;那么直接处理完毕结束&#xff0c;如果自己处理不了&#xff0c;next 方法会继续向下执行 新建 public 文件夹&#xff0c;里面添加 index.html、style.css 文件 …...

带讲解的自行车租赁系统,可做毕设/课设

适合人群: 马上毕业/需要毕设的同学 技术栈: 前后端分离 前端使用: Vue Element 后端使用: SpringBoot Mysql8.0 Mybatis 支付宝支付 功能截图: 分为管理员端和 普通用户端 和 维修人员端 阿里大佬亲讲 免费看地址: 见评论区...

mysql指令

1.删除表&#xff1a; drop table table_name; 2.查询表字段&#xff1a; select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAMEtable_name; 参考链接 3.切换数据库&#xff1a; use database_name 4.查看当前数据库所有表 show tables;...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...