docker 相关操作
1. 以下是一些常见的 Docker 命令:
docker --version
显示安装的 Docker 版本。
docker pull <image_name>
从 Docker Hub 或其他镜像仓库下载镜像。
docker build -t <image_name> <path>
从指定路径的 Dockerfile 构建 Docker 镜像。
docker images
列出本地所有的 Docker 镜像。
docker ps
列出所有正在运行的容器。
docker ps -a
列出所有容器(包括运行和停止的容器)。
docker run <image_name>
根据指定镜像运行一个容器。
docker run -d <image_name>
在后台(脱离模式)运行容器。
docker exec -it <container_id> <command>
在正在运行的容器中执行命令(如 bash 或 sh)。
docker stop <container_id>
停止正在运行的容器。
docker start <container_id>
启动已停止的容器。
docker restart <container_id>
重启容器。
docker rm <container_id>
删除已停止的容器。
docker rmi <image_name>
删除 Docker 镜像。
docker logs <container_id>
查看正在运行或已停止容器的日志。
docker-compose up
启动 docker-compose.yml 文件中定义的服务。
docker-compose down
停止并删除 docker-compose.yml 文件中定义的容器、网络和卷。
docker network ls
列出所有 Docker 网络。
docker volume ls
列出所有 Docker 卷。
docker info
显示 Docker 系统的全局信息。
2. 手动生成一个 Docker 镜像
要手动生成一个 Docker 镜像,你通常需要创建一个 Dockerfile,然后使用 Docker 命令来构建镜像。下面是整个过程的步骤:
1. 创建 Dockerfile
首先,你需要创建一个 Dockerfile 文件,定义镜像的构建过程。Dockerfile 是一组指令,告诉 Docker 如何构建镜像。
示例 Dockerfile
以下是一个简单的 Dockerfile 示例,用于创建一个包含 Python 环境的镜像:
# 使用官方的 Python 作为基础镜像
FROM python:3.8-slim# 设置工作目录
WORKDIR /app# 将本地代码复制到容器中
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 设置容器启动时执行的命令
CMD ["python", "app.py"]
FROM: 定义基础镜像,这里使用的是 Python 3.8 版本的官方镜像。WORKDIR: 设置容器内的工作目录,所有后续命令都会在此目录下运行。COPY: 将本地文件(如源代码)复制到容器内。RUN: 在容器内执行命令,这里用于安装 Python 依赖。CMD: 设置容器启动时执行的命令。
2. 构建镜像
一旦你有了 Dockerfile,你就可以用 docker build 命令来构建镜像。
命令格式:
docker build -t <image_name>:<tag> <path_to_dockerfile>
<image_name>是你为镜像指定的名称。<tag>是镜像的标签,通常是版本号,比如latest或v1.0。<path_to_dockerfile>是 Dockerfile 所在的目录,通常是当前目录(.)。
示例:
docker build -t my_python_app:latest .
这个命令会在当前目录(.)查找 Dockerfile 并使用该文件构建镜像,最后生成的镜像会被命名为 my_python_app,标签为 latest。
3. 查看生成的镜像
构建完成后,你可以使用 docker images 命令查看所有本地的 Docker 镜像:
docker images
这将列出所有可用的镜像,类似于以下输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
my_python_app latest abc123def456 5 seconds ago 150MB
python 3.8-slim 789xyz123abc 2 days ago 80MB

4. 运行镜像
你可以使用 docker run 命令来启动一个容器并运行你的镜像。例如:
docker run -d --name my_python_app_container my_python_app:latest
-d表示在后台运行容器。--name用于给容器指定一个名称。my_python_app:latest是你刚刚构建的镜像。

5. 删除镜像
如果你不再需要某个镜像,可以使用 docker rmi 命令删除它:
docker rmi my_python_app:latest
这将删除名为 my_python_app 且标签为 latest 的镜像。
3. 项目目录
如果你有一个项目目录,并希望在该目录中构建 Docker 镜像,目录结构通常像这样:
/my-project├── Dockerfile├── app.py├── requirements.txt└── ... (其他文件)
我的 app.py 文件是 print("hello world") 但是 docker run 后,怎么没有显示
如果你在 app.py 文件中只是简单地写了 print("hello world"),但是使用 docker run 后没有看到输出,可能是因为容器默认运行时没有将标准输出(stdout)正确地映射到终端。你可以通过以下几种方式来调试和确保输出显示。
1. 确保容器的输出没有被重定向
默认情况下,Docker 容器的标准输出(stdout)和标准错误(stderr)是打印到控制台的。但是,如果容器是在后台运行的(即使用了 -d 参数),输出会被忽略。确保你没有使用 -d 参数,或者查看容器的日志。
解决方法:不使用 -d 以交互模式启动容器
如果你没有使用 -d,容器会在前台运行并直接打印输出:
docker run --name my_python_app my_python_app:latest
这样,你应该能看到 hello world 输出。

2. 查看容器的日志
如果你使用了 -d 参数让容器在后台运行,你可以通过以下命令查看容器的日志输出:
docker logs my_python_app_container
或者:
docker logs <container_id>
这会显示容器的标准输出和错误输出。如果 app.py 中有 print("hello world"),你应该能在这里看到输出。
3. 确保 Dockerfile 设置正确
确保你的 Dockerfile 配置正确。特别是确保容器启动时执行 app.py,可以通过 CMD 或 ENTRYPOINT 来指定容器启动的命令。
例如,假设你有如下的 Dockerfile:
# 使用 Python 作为基础镜像
FROM python:3.8-slim# 设置工作目录
WORKDIR /app# 将本地代码复制到容器中
COPY . /app# 安装依赖
# RUN pip install --no-cache-dir -r requirements.txt # 如果有依赖的话# 执行 app.py 文件
CMD ["python", "app.py"]
确保你的 CMD 或 ENTRYPOINT 指令正确地运行了 app.py。
4. 调试步骤
确保容器启动后,python app.py 会执行。
如果你仍然无法看到输出,可以进入容器内部进行调试,看看脚本是否正常执行。
进入容器内部:
docker exec -it my_python_app_container /bin/bash
然后手动执行脚本:
python /app/app.py
5. 完全重新构建镜像
如果你对 Dockerfile 或代码做了更改,确保重新构建镜像并运行容器。可以使用以下命令来重新构建镜像:
docker build -t my_python_app:latest .
然后再次运行容器:
docker run my_python_app:latest
相关文章:
docker 相关操作
1. 以下是一些常见的 Docker 命令: docker --version显示安装的 Docker 版本。 docker pull <image_name>从 Docker Hub 或其他镜像仓库下载镜像。 docker build -t <image_name> <path>从指定路径的 Dockerfile 构建 Docker 镜像。 docker i…...
AI作图效率高,亲测ToDesk、顺网云、青椒云多款云电脑AIGC实践创作
一、引言 随着人工智能生成内容(AIGC)的兴起,越来越多的创作者开始探索高效的文字处理和AI绘图方式,而云电脑也正成为AIGC创作中的重要工具。相比于传统的本地硬件,云电脑在AIGC场景中展现出了显著的优势,…...
【代码随想录day57】【C++复健】 53. 寻宝(prim算法);53. 寻宝(kruskal算法)
53. 寻宝(prim算法) 好像在研究生的算法课上学过prim算法和kruskal算法,不过当时只是了解了一下大致的概念和流程,并没有涉及到如何去写代码的部分,今天也算是学习了一下这两个算法的代码应该如何去实现,还…...
C++中多态
1) 什么是多态性?C中如何实现多态? 多态性是指通过基类指针或引用调用派生类的函数,实现不同的行为 多态性可以提高代码的灵活性和可扩展性,使程序能够根据不同的对象类型执行不同的操作。 2)C中如何实现多态&#…...
【实现多网卡电脑的网络连接共享】
电脑A配备有两张网卡,分别命名为eth0和eth1(对于拥有超过两张网卡的情况,解决方案相似)。其中,eth0网卡能够连接到Internet,而eth1网卡则通过网线直接与另一台电脑B相连(在实际应用中࿰…...
算力介绍与解析
算力(Computing Power)是指计算机系统在单位时间内处理数据和执行计算任务的能力。算力是衡量计算机性能的重要指标,直接影响计算任务的速度和效率。 算力的分类和单位 a. 基础算力:以CPU的计算能力为主。适用于各个领域的计算。…...
解决 MyBatis 中空字符串与数字比较引发的条件判断错误
问题复现 假设你在 MyBatis 的 XML 配置中使用了如下代码: <if test"isCollect ! null"><choose><when test"isCollect 1">AND exists(select 1 from file_table imgfile2 where task.IMAGE_SEQimgfile2.IMAGE_SEQ and im…...
python 词向量的代码解读 self.word_embeds = nn.Embedding(vocab_size, embedding_dim) 解释下
在PyTorch中,nn.Embedding 是一个用于将稀疏的离散数据表示为密集的嵌入向量的模块。这在自然语言处理(NLP)任务中非常常见,例如在处理单词或字符时,我们通常需要将这些离散的标识符转换为可以被神经网络处理的连续值向…...
记一次:使用C#创建一个串口工具
前言:公司的上位机打不开串口,发送的时候设备总是关机,因为和这个同事关系比较好,编写这款软件是用C#编写的,于是乎帮着解决了一下(是真解决了),然后整理了一下自己的笔记 一、开发…...
Android Studio新版本的一个资源id无法找到的bug解决
Android Studio新版本的一个资源id无法找到的bug解决 文章目录 Android Studio新版本的一个资源id无法找到的bug解决一、前言二、Android Studio的无法获取到资源id的bug1、一段简单的Java代码1、错误现象2、错误解决方法 三、其他1、小结2、gradle.properties文件 其他相关属性…...
Datawhale AI冬令营(第一期)--零基础定制你的专属大模型
本文主要简述如何快速完成和一些小细节 第一步下载嬛嬛数据集 数据来源:self-llm/dataset/huanhuan.json at master datawhalechina/self-llm GitHub 注意:1.一定是数据集下载完成一定是.json结尾的 2.这个是github的网址,可能会遇到打不开的情况 …...
LLMs之APE:基于Claude的Prompt Improver的简介、使用方法、案例应用之详细攻略
LLMs之APE:基于Claude的Prompt Improver的简介、使用方法、案例应用之详细攻略 目录 Prompt Improver的简介 0、背景痛点 1、优势 2、实现思路 Prompt优化 示例管理 提示词评估 Prompt Improver的使用方法 1、使用方法 Prompt Improver的案例应用 1、Kap…...
【Unity人形布娃娃插件】Ragdoll Animator
Ragdoll Animator 是一款为 Unity 引擎开发的插件,专注于让角色在运行时动态地切换到布娃娃物理系统(Ragdoll Physics)。该插件帮助开发者轻松创建逼真的角色动画过渡效果,尤其适用于需要角色碰撞、摔倒、受击或其他物理反应的场景…...
跨团队协作中目标一致性至关重要
在团队协作的复杂拼图里,目标一致性是那根贯穿始终的主线,缺之则拼图难成,团队亦难达预期之效。 且看这样一个实例:部门承接了业务方一项紧急的数据处理需求,此任务犹如一座亟待攀登的险峰,落在了 A 团队…...
Excel的文件导入遇到大文件时
Excel的文件导入向导如何把已导入数据排除 入起始行,选择从哪一行开始导入。 比如,前两行已经导入了,第二次导入的时候排除前两行,从第三行开始,就将导入起始行设置为3即可,且不勾选含标题行。 但遇到大文…...
使用字典进行动态编程
在你的程序中,你想要执行各种计算,例如计算卫星的总数。 此外,当你进行更高级的编程时,你可能会发现你需要从文件或数据库中加载此类信息,而不是直接编码到 Python 中。 为了帮助支持这些场景,Python 使你…...
机器学习02-发展历史补充
机器学习02-发展历史补充 文章目录 机器学习02-发展历史补充1-机器学习个人理解1-初始阶段:统计学习和模式识别(20世纪50年代至80年代)2-第二阶段【集成时代】【核方法】(20世纪90年代至2000年代初期)3-第三阶段【特征…...
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之计数器与累加器(一)
学习背景: 在现实生活中一些需要计数的场景下我们会用到计数器,如空姐手里记录乘客的计数器,跳绳手柄上的计数器等。累加器是累加器求和,以得到最后的结果。计数器和累加器它们虽然是基础知识,但是应用广泛࿰…...
Android的SurfaceView和TextureView介绍
文章目录 前言一、什么是SurfaceView ?1.1 SurfaceView 使用示例1.2 SurfaceView 源码概述1.3 SurfaceView 的构造与初始化1.4 SurfaceHolder.Callback 回调接口1.5 SurfaceView 渲染机制 二、什么是TextureView?2.1 TextureView 使用示例2.2 TextureVie…...
Scala的集合
1 集合简介 1)Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable 特质。 2)对于几乎所有的集合类,Scala 都同时提供了可变和不可变的版本,分别位于以下两 个包 不可变集合&am…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
