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> 是镜像的标签,通常是版本号,比如 latestv1.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,可以通过 CMDENTRYPOINT 来指定容器启动的命令。

例如,假设你有如下的 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"]

确保你的 CMDENTRYPOINT 指令正确地运行了 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WinRAR 创建自解压文件 自定义标题 自定义图标 添加桌面快捷方式

一、创建自解压文件 自定义标题 自定义图标 1、利用Winrar压缩你要压缩的文件夹"【游戏运行必备组件】.rar",选择压缩格式是【rar格式】&#xff0c;选择创【建自解压格式…】 2、点击【高级】&#xff0c;选择【自解压文件选项】 3、自定义解压界面【窗口标题】、…

深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 yolov5网络结构比较复杂&#xff0c;上次我们简要介绍了yolov5网络模块&#xff0c;并且复现了C3模块&#xff0c;深度学习基础–yolov5网络结构简介&a…

:-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

QT想使用webenginewidgets&#xff0c;因此只能使用MSVC进行编译处理&#xff0c;出现报错:-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isnt set 错误的原因是MSCV版本不匹配 D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\mkspecs\common\msvc-version.conf 报的错如下图…

ElasticSearch - 使用 Composite Aggregation 实现桶的分页查询

文章目录 官方文档概述Composite Aggregation 概述示例&#xff1a;基本分页查询分页&#xff1a;获取下一页结果使用场景注意事项 官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html#_pagin…

微积分复习笔记 Calculus Volume 2 - 3.7 Improper Integrals

3.7 Improper Integrals - Calculus Volume 2 | OpenStax

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期

知识要点&#xff1a;变量的作用域和生存期 视频&#xff1a; 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组&#xff0c;内放 10 个学生成绩&#xff0c;写一个函数&#xff0c;求出平均分、最高分和最低分。 任务要求用一个函数来完…

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式

学习笔记&#xff1a;从ncsi/nc-si协议和代码了解网络协议的设计范式 参考文档&#xff1a; https://www.dmtf.org/standards/published_documents https://www.dmtf.org/dsp/DSP0222 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf参考代…

2024.12.10——攻防世界Web_php_include

知识点&#xff1a;代码审计 文件包含 伪协议 伪协议知识点补充&#xff1a; 在PHP中&#xff0c;伪协议&#xff08;Pseudo Protocols&#xff09;也被称为流包装器&#xff0c;这些伪协议以 php://开头&#xff0c;后面跟着一些参数&#xff0c;用于指定要执行的操作或需要…

Wireshark如何查看数据包时间间隔

1.如果数据包量不大&#xff0c;抓包本身也不大&#xff0c;建议从绝对时间判断&#xff0c;打开wireshark软件&#xff0c;并点开相应要分析的抓包文件。 进入到最上方菜单<视图>,在弹出菜单选择时间显示格式&#xff0c;再在右侧菜单中选择自捕获经过的秒数。 这样就可…

【ChatGPT】解锁AI思维链:如何让机器像人类一样思考?

在人工智能领域&#xff0c;我们一直在追求让机器像人类一样思考。然而&#xff0c;即使是最先进的AI&#xff0c;也常常被诟病缺乏“常识”&#xff0c;难以理解复杂问题&#xff0c;更不用说像人类一样进行逻辑推理和解决问题了。最经常的表现就是遇到不会的地方&#xff0c;…

MVC基础——市场管理系统(四)

文章目录 项目地址六、EF CORE6.1 配置ef core环境6.2 code first6.2.1 创建Database context1. 添加navigation property2. 添加MarketContext上下文七、Authentication7.1 添加Identity7.2 Run DB migration for Identity7.3 使用Identity7.3.1 设置认证中间件7.3.2 设置权限…

FinClip | 2024年11月产品大事记

FinClip 的使命是使您&#xff08;业务专家和开发人员&#xff09;能够通过小程序解决关键业务流程挑战&#xff0c;并完成数字化转型的相关操作。不妨让我们看看在11月的产品与市场发布亮点&#xff0c;看看是否有助于您实现目标。 产品方面的相关动向&#x1f447;&#x1f…

华为eNSP:VRRP

一、VRRP背景概述 在现代网络环境中&#xff0c;主机通常通过默认网关进行网络通信。当默认网关出现故障时&#xff0c;网络通信会中断&#xff0c;影响业务连续性和稳定性。为了提高网络的可靠性和冗余性&#xff0c;采用虚拟路由冗余协议&#xff08;VRRP&#xff09;是一种…

安卓主板_MTK联发科android主板方案

在当前智能设备的发展中&#xff0c;安卓主板的配置灵活性和性能优化显得尤为重要。安卓主板的联发科方案&#xff0c;在芯片上&#xff0c;搭载联发科MTK6761、MT8766、MT6765、MT6762、MT8768、MT8390、MTK8370以及MT8788等型号&#xff0c;均基于64位的四核或八核架构设计。…

【论文阅读】PRIS: Practical robust invertible network for image steganography

内容简介 论文标题&#xff1a;PRIS: Practical robust invertible network for image steganography 作者&#xff1a;Hang Yang, Yitian Xu∗, Xuhua Liu∗, Xiaodong Ma∗ 发表时间&#xff1a;2024年4月11日 Engineering Applications of Artificial Intelligence 关键…

Redis应用—1.在用户数据里的应用

大纲 1.社区电商的业务闭环 2.Redis缓存架构的典型生产问题 3.用户数据在读多写少场景下的缓存设计 4.热门用户数据的缓存自动延期机制 5.缓存惊群与穿透问题的解决方案 6.缓存和数据库双写不一致问题分析 7.基于分布式锁保证缓存和数据库双写一致性 8.缓存和数据库双写…

【Tomcat】理解tomcat与Socket

目录 1. Tomcat 1.1 Tomcat帮助启动http服务器。 1.2 tomcat理解&#xff1a; 2. 计算机网络最基本的流程 2.1 信息是怎么来的&#xff1f; 2.2 端口是干什么的&#xff1f; 3. 简单的Socket案例 服务端 客户端 启动&#xff1a; 3.2 在Tomcat发送信息&#xff0c;看…

Linux / Windows | ping IP + Port 测试

注&#xff1a;本文为 “Linux / Windows | ping IP Port 测试端口通畅” 相关文章合辑。 未整理去重。 windows 如何确认服务器上程序端口是否正常&#xff08;ping、tcping&#xff09; 三希已于 2023-05-22 18:08:06 修改 方式 1&#xff1a;ping 命令 ping 命令说明 p…

计算机网络之网络层超详细讲解

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …

LLMC:大语言模型压缩工具的开发实践

关注&#xff1a;青稞AI&#xff0c;学习最新AI技术 青稞Talk主页&#xff1a;qingkelab.github.io/talks 大模型的进步&#xff0c;正推动我们向通用人工智能迈进&#xff0c;然而庞大的计算和显存需求限制了其广泛应用。模型量化作为一种压缩技术&#xff0c;虽然可以用来加速…