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

Docker使用小结

概念
  • 镜像( Image ) :相当于一个 root 文件系统;镜像构建时,分层存储、层层构建;
  • 容器( Container ) :镜像是静态的定义,容器是镜像运行时的实体;容器的实质是进程;分层存储;所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录;
  • 仓库( Repository ):一个仓库会包含同一个软件不同版本的镜像
常用命令
命令作用
docker command --help查看命令帮助
docker ps显示正在运行的容器信息
docker start CONTAINER ID启动已停止的容器
docker restart CONTAINER ID重启已停止的容器
docker logs CONTAINER ID查看容器内的标准输出
docker stop停止容器
docker rm
docker inspect获取容器或镜像的详细信息
docker build -t使用 Dockerfile 构建镜像
docker images列出本地存储的所有镜像
docker pull从 Docker 仓库拉取镜像
docker push将镜像推送到 Docker 仓库
docker exec在运行的容器中执行命令
docker login登录 Docker 仓库
docker logout登出 Docker 仓库
docker info显示 Docker 系统的详细信息
docker network ls列出所有 Docker 网络
docker volume ls列出所有 Docker 卷
Docker镜像制作流程
1.创建工作目录
mkdir test_docker_app
cd test_docker_app

目录结构:

test-flask-app/
├── app.py
└── requirements.txt

app.py

from flask import Flaskapp = Flask(__name__)@app.route('/')
def test():return "Test Docker!"if __name__ == "__main__":app.run(host='0.0.0.0', port=5000)

requirements.txt

flask
2.编写Dockerfile

在test-flask-app/目录下新建Dockerfile文件:

nano Dockerfile

DockerFile内容:

# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 将当前目录下的文件复制到容器中的 /app 目录
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露端口
EXPOSE 5000# 容器启动后运行的命令
CMD ["python", "app.py"]

Ctrl + O :输入文件名DockerFile
Ctrl + X :退出 nano 编辑器

3.构建镜像

在test-flask-app/目录下执行:

docker build -t test-flask-app .

其中:

  • -t my-flask-app:给镜像打标签。
  • .:表示当前目录是构建上下文。

输出:

[+] Building 23.5s (9/9) FINISHED                                                                                                                                                                                                                              docker:default=> [internal] load build definition from Dockerfile                                                                                                                                                                                                                     0.0s=> => transferring dockerfile: 372B                                                                                                                                                                                                                                     0.0s=> [internal] load metadata for docker.io/library/python:3.9-slim                                                                                                                                                                                                       7.7s=> [internal] load .dockerignore                                                                                                                                                                                                                                        0.0s=> => transferring context: 2B                                                                                                                                                                                                                                          0.0s=> [internal] load build context                                                                                                                                                                                                                                        0.0s=> => transferring context: 636B                                                                                                                                                                                                                                        0.0s=> [2/4] WORKDIR /app                                                                                                                                                                                                                                                   0.3s=> [3/4] COPY . /app                                                                                                                                                                                                                                                    0.0s=> [4/4] RUN pip install --no-cache-dir -r requirements.txt                                                                                                                                                                                                             6.9s=> exporting to image                                                                                                                                                                                                                                                   0.3s => => exporting layers                                                                                                                                                                                                                                                  0.3s => => writing image sha256:bf19d7bb90c28b356e5e4ac5e31c831fe3495c85731175740dd94352d91be009                                                                                                                                                                             0.0s => => naming to docker.io/library/test-flask-app          
4.查看镜像:
docker images
REPOSITORY                                      TAG                       IMAGE ID       CREATED          SIZE                                                                                                                                                                
test-flask-app                                    latest                    bf19d7bb90c2   20 seconds ago   136MB
5.运行容器
docker run -d -p 5000:5000 --name my-flask-container test-flask-app
  • -d:后台运行
  • -p 5000:5000:将宿主机的 5000 端口映射到容器的 5000 端口
  • –name:为容器命名
6. 测试访问
curl http://localhost:5000

打印出:

Test Docker!

或浏览器访问:http://localhost:5000

相关文章:

Docker使用小结

概念 镜像( Image ) :相当于一个 root 文件系统;镜像构建时,分层存储、层层构建;容器( Container ) :镜像是静态的定义,容器是镜像运行时的实体;…...

kubectl top 查询pod连接数

在 Kubernetes 中,kubectl top 命令默认仅支持查看 Pod 或节点的 CPU/内存资源使用情况,并不直接提供 TCP 连接数的统计功能。若要获取 Pod 的 TCP 连接数,需结合其他工具和方法。以下是具体实现方案: 1. 直接进入容器查看 TCP 连…...

Kubernetes生产实战(十七):负载均衡流量分发管理实战指南

在Kubernetes集群中,负载均衡是保障应用高可用、高性能的核心机制。本文将从生产环境视角,深入解析Kubernetes负载均衡的实现方式、最佳实践及常见问题解决方案。 一、Kubernetes负载均衡的三大核心组件 1)Service资源:集群内流…...

Git 分支指南

什么是 Git 分支? Git 分支是仓库内的独立开发线,你可以把它想象成一个单独的工作空间,在这里你可以进行修改,而不会影响主分支(或 默认分支)。分支允许开发者在不影响项目实际版本的情况下,开…...

自动泊车技术—相机模型

一、相机分类及特性 传感器类型深度感知原理有效工作范围环境适应性功耗水平典型成本区间数据丰富度单目相机运动视差/几何先验1m~∞光照敏感1-2W5−5−502D纹理中双目相机立体匹配 (SGM/SGBM算法)0.3m~20m纹理依赖3-5W50−50−3002D稀疏深度多摄像头系统多视角三角测量0.1m~5…...

程序代码篇---esp32视频流处理

文章目录 前言一、ESP32摄像头设置1.HTTP视频流(最常见)2.RTSP视频流3.MJPEG流 二、使用OpenCV读取视频流1. 读取HTTP视频流2. 读取RTSP视频流 三、使用requests库读取MJPEG流四、处理常见问题1. 连接不稳定或断流2. 提高视频流性能2.1降低分辨率2.2跳过…...

数据结构与算法分析实验12 实现二叉查找树

实现二叉查找树 1、二叉查找树介绍2.上机要求3.上机环境4.程序清单(写明运行结果及结果分析)4.1 程序清单4.1.1 头文件 TreeMap.h 内容如下:4.1.2 实现文件 TreeMap.cpp 文件内容如下:4.1.3 源文件 main.cpp 文件内容如下: 4.2 实现展效果示5…...

深入浅出之STL源码分析2_类模版

1.引言 我在上面的文章中讲解了vector的基本操作,然后提出了几个问题。 STL之vector基本操作-CSDN博客 1.刚才我提到了我的编译器版本是g 11.4.0,而我们要讲解的是STL(标准模板库),那么二者之间的关系是什么&#x…...

Docker、Docker-compose、K8s、Docker swarm之间的区别

1.Docker docker是一个运行于主流linux/windows系统上的应用容器引擎,通过docker中的镜像(image)可以在docker中构建一个独立的容器(container)来运行镜像对应的服务; 例如可以通过mysql镜像构建一个运行mysql的容器,既可以直接进入该容器命…...

【Linux】线程的同步与互斥

目录 1. 整体学习思维导图 2. 线程的互斥 2.1 互斥的概念 2.2 见一见数据不一致的情况 2.3 引入锁Mutex(互斥锁/互斥量) 2.3.1 接口认识 2.3.2 Mutex锁的理解 2.3.3 互斥量的封装 3. 线程同步 3.1 条件变量概念 3.2 引入条件变量Cond 3.2.1 接口认识 3.2.2 同步的…...

C++发起Https连接请求

需要下载安装openssl //stdafx.h #pragma once #include<iostream> #include <openssl/ssl.h> #include <openssl/err.h> #include <iostream> #include <string>#pragma comment(lib, "libssl.lib") #pragma comment(lib, "lib…...

Linux 内核链表宏的详细解释

&#x1f527; Linux 内核链表结构概览 Linux 内核中的链表结构定义在头文件 <linux/list.h> 中。核心结构是&#xff1a; struct list_head {struct list_head *next, *prev; }; 它表示一个双向循环链表的节点。链表的所有操作都围绕这个结构体展开。 &#x1f9e9; …...

[架构之美]Spring Boot集成MyBatis-Plus高效开发(十七)

[架构之美]Spring Boot集成MyBatis-Plus高效开发&#xff08;十七&#xff09; 摘要&#xff1a;本文通过图文代码实战&#xff0c;详细讲解Spring Boot整合MyBatis-Plus全流程&#xff0c;涵盖代码生成器、条件构造器、分页插件等核心功能&#xff0c;助你减少90%的SQL编写量…...

游戏引擎学习第270天:生成可行走的点

回顾并为今天的内容定下基调 今天的计划虽然还不完全确定&#xff0c;可能会做一些内存分析&#xff0c;也有可能暂时不做&#xff0c;因为目前并没有特别迫切的需求。最终我们会根据当下的状态随性决定&#xff0c;重点是持续推动项目的进展&#xff0c;无论是 memory 方面还…...

批量统计PDF页数,统计图像属性

软件介绍&#xff1a; 1、支持批量统计PDF、doc\docx、xls\xlsx页数 2、支持统计指定格式文件数量&#xff08;不填格式就是全部&#xff09; 3、支持统计JPG、JPEG、PNG图像属性 4、支持统计多页TIF页数、属性 5、支持统计PDF、JPG画幅 统计图像属性 「托马斯的文件助手」…...

QT Creator配置Kit

0、背景&#xff1a;qt5.12.12vs2022 记得先增加vs2017编译器 一、症状&#xff1a; 你是否有以下症状&#xff1f; 1、用qt新建的工程&#xff0c;用qmake&#xff0c;可惜能看见的只有一个pro文件&#xff1f; 2、安装QT Creator后&#xff0c;使用MSVC编译显示no c com…...

[架构之美]IntelliJ IDEA创建Maven项目全流程(十四)

[架构之美]IntelliJ IDEA创建Maven项目全流程&#xff08;十四&#xff09; 摘要&#xff1a;本文将通过图文结合的方式&#xff0c;详细讲解如何使用IntelliJ IDEA快速创建Maven项目&#xff0c;涵盖环境配置、项目初始化、依赖管理及常见问题解决方案。适用于Java开发新手及…...

SpringBoot学习(上) , SpringBoot项目的创建(IDEA2024版本)

目录 1. SpringBoot介绍 SpringBoot特点 2. SpringBoot入门 2.1 创建SpringBoot项目 Spring Initialize 第一步: 选择创建项目 第二步: 选择起步依赖 第三步: 查看启动类 2.2 springboot父项目 2.3 测试案例 2.3.1 数据库 2.3.2 生成代码 1. SpringBoot介绍 Spring B…...

《Python星球日记》 第51天:神经网络基础

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、引言&#xff1a;走进神经网络的世界二、神经元与激活函数1. 神经元&#x…...

MindSpore框架学习项目-ResNet药物分类-模型评估

目录 4.模型评估 4.1模型预测 4.1.1加载模型 4.1.2通过传入图片路径进行推理 单张图片推理代码解释 4.2图片推理 4.2.1构造可视化推理结果函数 可视化推理结果函数代码解释 4.2.2进行单张推理 参考内容&#xff1a; 昇思MindSpore | 全场景AI框架 | 昇思MindSpore社区…...

Visual Studio Code 前端项目开发规范合集【推荐插件】

文章目录 前言代码格式化工具&#xff08;Prettier&#xff09;1、下载 prettier 相关依赖&#xff1a;2、安装 Vscode 插件&#xff08;Prettier&#xff09;&#xff1a;3、配置 Prettier&#xff08;.prettierrc.cjs&#xff09;&#xff1a; 代码规范工具&#xff08;ESLin…...

uniapp-商城-48-后台 分类数据添加修改弹窗bug

在第47章的操作中&#xff0c;涉及到分类的添加、删除和更新功能&#xff0c;但发现uni-popup组件存在bug。该组件的函数接口错误导致在小程序中出现以下问题&#xff1a;1. 点击修改肉类名称时&#xff0c;回调显示为空&#xff0c;并报错“setVal is not defined”&#xff0…...

OpenLayers 精确经过三个点的曲线绘制

OpenLayers 精确经过三个点的曲线绘制 根据您的需求&#xff0c;我将提供一个使用 OpenLayers 绘制精确经过三个指定点的曲线解决方案。对于三个点的情况&#xff0c;我们可以使用 二次贝塞尔曲线 或 三次样条插值&#xff0c;确保曲线精确通过所有控制点。 实现方案 下面是…...

uniapp小程序中实现无缝衔接滚动效果

组件滚动通知只能实现简单的滚动效果&#xff0c;不能实现滚动内容中的字进行不同颜色的更改&#xff0c;下面实现一个无缝衔接的滚动动画&#xff0c;可以根据自己的需要进行艺术化的更改需要滚动的内容&#xff0c;也可以自定义更改滚动速度。 <template><view cla…...

【Docker 新手入门指南】第四章:镜像加速

【Docker 新手入门指南】系列文章目录 【Docker 新手入门指南】第一章&#xff1a;前言【Docker 新手入门指南】第二章&#xff1a;架构概述【Docker 新手入门指南】第三章&#xff1a;快速安装【Docker 新手入门指南】第四章&#xff1a;镜像加速 文章目录 &#x1f680;【Doc…...

k8s删除pv和pvc后,vg存储没释放分析

原因是pv对应的lvm没删除 pv如下&#xff1a; local-068e2cac-22de-40f3-af90-efd151d043c8 100Gi RWO Retain Released sase-ops/alertmanager-kube-prometheus-stack-alertmanager-db-alertmanager-kube-prometheus-stack-alertmanager-0 …...

Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking

Ubuntu 22.04&#xff08;WSL2&#xff09;使用 Docker 安装 Zipkin 和 Skywalking 分布式追踪工具在现代微服务架构中至关重要&#xff0c;它们帮助开发者监控请求在多个服务之间的流动&#xff0c;识别性能瓶颈和潜在错误。本文将指导您在 Ubuntu 22.04&#xff08;WSL2 环境…...

【DLF】基于语言的多模态情感分析

作者提出的不足​​ ​​模态平等处理导致冗余与冲突​​ ​​问题​​:现有MSA方法对所有模态(语言、视觉、音频)平等处理,忽略模态间贡献差异(如语言为主导模态)。​​后果​​:跨模态交互引入冗余信息(如视觉和音频中与情感无关的噪声),甚至模态对间双向信息传递(…...

window 显示驱动开发-线性伸缩空间段

线性伸缩空间段类似于线性内存空间段。 但是&#xff0c;伸缩空间段只是地址空间&#xff0c;不能容纳位。 若要保存位&#xff0c;必须分配系统内存页&#xff0c;并且必须重定向地址空间范围以引用这些页面。 内核模式显示微型端口驱动程序&#xff08;KMD&#xff09;必须实…...

[Linux网络_71] NAT技术 | 正反代理 | 网络协议总结 | 五种IO模型

目录 1.NAT技术 NAPT 2.NAT和代理服务器 3.网线通信各层协议总结 补充说明 4.五种 IO 模型 1.什么是IO&#xff1f;什么是高效的IO&#xff1f; 2.有那些IO的方式&#xff1f;这么多的方式&#xff0c;有那些是高效的&#xff1f; 异步 IO &#x1f3a3; 关键缺陷类比…...

免费5个 AI 文字转语音工具网站!

一个爱代码的设计师在运营,不定时分享干货、学习方法、效率工具和AIGC趋势发展。个人网站&#xff1a;tomda.top 分享几个好用的文字转语音、语音转文字的在线工具&#xff0c;麻烦需要的朋友保存。 01. ChatTTS 中英文智能转换&#xff0c;语音自然流畅&#xff0c;在线免费…...

【入门】数字走向II

描述 输入整数N&#xff0c;输出相应方阵。 输入描述 一个整数N。&#xff08; 0 < n < 10 ) 输出描述 一个方阵&#xff0c;每个数字的场宽为3。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int in;i>1;i--){for(…...

Linux基础(文件权限和用户管理)

1.文件管理 1.1 文件权限 文件的权限总共有三种&#xff1a;r&#xff08;可读&#xff09;&#xff0c;w&#xff08;可写&#xff09;&#xff0c;x&#xff08;可执行&#xff09;&#xff0c;其中r是read&#xff0c;w是write&#xff0c;x是execute的缩写。 我们…...

【BYD_DM-i技术解析】

关键词&#xff1a;构型、能量流、DM-i 一、发展历史&#xff1a;从DM1到DM5的技术跃迁 比亚迪DM&#xff08;Dual Mode&#xff09;技术始于2008年&#xff0c;其发展历程可划分为五代&#xff0c;核心目标始终围绕“油电协同”与“高效节能”展开&#xff1a; DM1&#xf…...

React Hooks 精要:从入门到精通的进阶之路

Hooks 是 React 16.8 引入的革命性特性,它让函数组件拥有了类组件的能力。以下是 React Hooks 的详细使用指南。 一、基础 Hooks 1. useState - 状态管理 import { useState } from react;function Counter() {const [count, setCount] = useState(0); // 初始值为0return …...

为什么选择 FastAPI、React 和 MongoDB?

在技术日新月异的今天,全栈开发需要兼顾效率、性能和可扩展性。FastAPI、React 和 MongoDB 这三者的组合,恰好构成了一个覆盖前后端与数据库的技术黄金三角。它们各自解决了开发中的核心痛点,同时以轻量化的设计和强大的生态系统,成为现代 Web 开发的首选方案。以下将从架构…...

01背包类问题

文章目录 [模版]01背包1. 第一问: 背包不一定能装满(1) 状态表示(2) 状态转移方程(3) 初始化(4) 填表顺序(5) 返回值 2. 第二问: 背包恰好装满3. 空间优化 416.分割等和子集1. 状态表示2. 状态转移方程3. 初始化4. 填表顺序5. 返回值 [494. 目标和](https://leetcode.cn/proble…...

重复的子字符串

28. 找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#…...

Spark MLlib网页长青

一、实验目的 1.掌握Spark SQL中用户自定义函数的编写。 2. 掌握特征工程的OneHotEncoder、VectorAssembler。 3. 熟悉决策树算法原理,能够使用Spark MLlib库编写程序 4. 掌握二分类问题评估方法 5. 能够使用TrainValidation和crossValidation交叉验证找出最佳模型。 6…...

详解多协议通信控制器

详解多协议通信控制器 在上文中,我们使用Verilog代码实现了完整的多协议通信控制器,只是讲解了具体原理与各个模块的实现代码,但是为什么这么写?这么写有什么用?模块与模块之间又是怎么连接相互作用的?今天我们就来处理这些问题。 为什么不能直接用 FPGA 内部时钟给外设?…...

JavaWeb基础

七、JavaWeb基础 javaWeb&#xff1a;完整技术体系&#xff0c;掌握之后能够实现基于B/S架构的系统 1. C/S和B/S 1.1 C/S&#xff08;Client/server&#xff09; C/S&#xff1a;客户端与服务器 本质&#xff1a;本地上有代码&#xff08;程序在本机上&#xff09;优点&#…...

localStorage和sessionStorage

localStorage和sessionStorage localStorage是指在用户浏览器中存储数据的方式&#xff0c;允许Web应用程序将少量的数据保存在用户设备上&#xff0c;便于页面之间、关闭浏览器后的数据持久化&#xff0c;他不会随着HTTP请求发送道服务器&#xff0c;减少带宽消耗&#xff0c…...

c++类【高潮】

类继承 和直接复制源代码修改相比&#xff0c;继承的好处是减少测试。 基类&#xff1a;原始类&#xff0c; 派生类&#xff1a;继承类&#xff0c;基于基类丰富更多内容的类。 继承一般用公有继承&#xff0c;class 派生类名 : public 基类名{……}&#xff1b; 公有继承&…...

C++进阶--AVL树的实现续

文章目录 C进阶--AVL树的实现双旋AVL树的查找AVL树的检验结语 很高兴和搭大家见面&#xff0c;给生活加点impetus&#xff0c;开启今天的比编程之路&#xff01;&#xff01; 今天我们来完善AVL树的操作&#xff0c;为后续红黑树奠定基础&#xff01;&#xff01; 作者&#x…...

1 2 3 4 5顺序插入,形成一个红黑树

红黑树的特性与优点 红黑树是一种自平衡的二叉搜索树&#xff0c;通过额外的颜色标记和平衡性约束&#xff0c;确保树的高度始终保持在 O(log n)。其核心特性如下&#xff1a; 每个节点要么是红色&#xff0c;要么是黑色。根节点和叶子节点&#xff08;NIL节点&#xff09;是…...

Telnetlib三种异常处理方案

1. socket.timeout 异常 触发场景 网络延迟高或设备响应缓慢&#xff0c;导致连接或读取超时。 示例代码 import telnetlib import socketdef telnet_connect_with_timeout(host, port23, timeout2):try:# 设置超时时间&#xff08;故意设置较短时间模拟超时&#xff09;tn…...

Linux:进程间通信---消息队列信号量

文章目录 1.消息队列1.1 消息队列的原理1.2 消息队列的系统接口 2. 信号量2.1 信号量的系统调用接口 3. 浅谈进程间通信3.1 IPC在内核中数据结构设计3.2 共享内存的缺点3.3 理解信号量 序&#xff1a;在上一章中&#xff0c;我们引出了命名管道和共享内存的概念&#xff0c;了解…...

暗物质卯引力挂载技术

1、物体质量以及其所受到的引力约束(暗物质压力差) 自然界的所有物体,其本身都是没有质量的。我们所理解的质量,其实是物体球周空间的暗物质对物体的挤压,压力差。 对于宇宙空间中的单个星球而言,它的球周各处压力是相同的,所以,它处于平衡状态,漂浮在宇宙中。 对于星…...

JMeter 中实现 双 WebSocket(双WS)连接

在 JMeter 中实现 双 WebSocket&#xff08;双WS&#xff09;连接 的测试场景&#xff08;例如同时连接两个不同的 WebSocket 服务或同一服务的两个独立会话&#xff09;&#xff0c;可以通过以下步骤配置&#xff1a; 1. 场景需求 两个独立的 WebSocket 连接&#xff08;例如 …...

卡尔曼滤波算法简介与 Kotlin 实现

一、引言 卡尔曼滤波&#xff08;Kalman Filter&#xff09;是一种基于线性系统状态空间模型的最优递归估计算法&#xff0c;由鲁道夫・E・卡尔曼于 1960 年提出。其核心思想是通过融合系统动态模型预测值与传感器观测值&#xff0c;在最小均方误差准则下实现对系统状态的实时…...