当前位置: 首页 > 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
http://www.lryc.cn/news/166610.html

相关文章:

  • Pycharm 配置python项目本地运行环境
  • DevEco Studio中如何设置HarmonyOS/OpenHarmony应用开发
  • Matlab图像处理-三原色
  • QLExpress代码解读,运行原理解析
  • M1 Mac创建虚拟环境遇到的问题
  • flutter 与H5交互
  • 【Java 基础篇】Java类型通配符:解密泛型的神秘面纱
  • 《极客时间:如何成为学习高手》【方法论】
  • 如何处理ChatGPT在文本生成中的语法错误和不合理性?
  • GitHub常用命令
  • 【Linux学习笔记】 - 常用指令学习及其验证(上)
  • 火山引擎边缘云助力智能科技赋予生活更多新意
  • 【无标题】CTreeCtrl更改-/+展开按钮颜色
  • 【深度学习】 Python 和 NumPy 系列教程(十九):Matplotlib详解:2、3d绘图类型(5)3D等高线图(3D Contour Plot)
  • Java ZGC 算法调优
  • 【海思SS626 | 开发环境】编译整个SDK全过程以及问题汇总
  • 83 # 静态服务中间件 koa-static 的使用以及实现
  • 带讲解的自行车租赁系统,可做毕设/课设
  • mysql指令
  • 【C语言】每日一题(半月斩)——day2
  • 电脑如何查看代理服务器IP?
  • 【C++11】{}初始化、std::initializer_list、decltype、STL新增容器
  • 【FPGA项目】进阶版沙盘演练——报文收发(报文处理、CDC、CRC)
  • 【程序员装机】自定义Edge浏览器用户目录
  • ubuntu18、20 cv_bridge 与自带opencv版本冲突问题
  • 贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据...
  • css自学框架之图片懒加载
  • RoutingKafkaTemplate,DefaultKafkaProducerFactory和 ReplyingKafkaTemplate
  • Flutter动态化开发之Fair实战
  • Stream流编程