【Docker】安装及使用
1. 安装Docker Desktop
Docker Desktop是官方提供的桌面版Docker客户端,在Mac上使用Docker需要安装这个工具。
- 访问 Docker官方页面 并下载Docker Desktop for Mac。
- 打开下载的
.dmg文件,并拖动Docker图标到应用程序文件夹。 - 安装完成后,打开Docker Desktop,等待Docker启动(菜单栏会出现一个鲸鱼图标)。
要验证安装是否成功,可以打开Terminal并运行以下命令:
docker --version
你应该看到Docker版本信息,例如:Docker version 20.10.7, build f0df350。
1.1 配置 Docker Desktop
- 在“Resources”选项中可以调整Docker使用的资源(CPU、内存等),根据你的需求适当配置。
2. Docker基本概念
在使用Docker前,了解以下几个核心概念非常重要:
- 镜像(Image): 镜像是一个包含程序运行环境和代码的只读模板。类似于虚拟机的快照。
- 容器(Container): 容器是镜像的运行实例。它是独立的、隔离的应用程序执行环境。
- Dockerfile: 用于定义如何构建一个Docker镜像的文件,里面包含了构建镜像的步骤。
- Docker Hub: 类似于GitHub,是Docker官方提供的镜像仓库,用户可以从这里下载镜像或上传自定义镜像。
3. Docker常用命令
以下是一些常用的Docker命令,后面会详细介绍这些命令在开发中的具体应用:
docker pull <镜像>:从Docker Hub拉取指定镜像。docker build -t <镜像名> .:根据当前目录的Dockerfile构建镜像。docker run <镜像>:运行镜像创建容器。docker ps:查看正在运行的容器。docker stop <容器ID>:停止一个运行中的容器。docker rm <容器ID>:删除一个容器。docker rmi <镜像ID>:删除一个镜像。docker exec -it <容器ID> /bin/bash:进入一个运行中的容器。
4. Java后端开发中使用Docker
假设我们有一个Java Spring Boot项目,我们可以通过Docker来运行它。
4.1 创建Dockerfile
首先,在项目的根目录下创建一个名为Dockerfile的文件,并编写以下内容:
# 使用OpenJDK镜像作为基础镜像
FROM openjdk:11-jdk-slim# 设置工作目录
WORKDIR /app# 将当前目录下的所有文件复制到容器中的/app目录
COPY . /app# 编译Spring Boot应用程序
RUN ./mvnw package# 暴露Spring Boot的默认端口8080
EXPOSE 8080# 运行应用程序
CMD ["java", "-jar", "target/your-app.jar"]
4.2 构建镜像并运行容器
- 在项目根目录打开终端,运行以下命令构建镜像:
docker build -t springboot-app .
- 构建完成后,运行镜像并创建容器:
docker run -p 8080:8080 springboot-app
此时,Java Spring Boot应用程序已经在Docker容器中运行,可以通过访问http://localhost:8080来访问服务。
5. Python后端开发中使用Docker
假设我们有一个Flask应用程序,以下是如何使用Docker来运行它。
5.1 创建Dockerfile
同样的,我们在Flask项目的根目录下创建一个Dockerfile文件:
# 使用python镜像作为基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制当前目录下的所有文件到容器中的/app目录
COPY . /app# 安装Flask依赖
RUN pip install -r requirements.txt# 暴露Flask默认端口5000
EXPOSE 5000# 运行Flask应用程序
CMD ["flask", "run", "--host=0.0.0.0"]
5.2 构建镜像并运行容器
- 构建镜像:
docker build -t flask-app .
- 运行镜像并创建容器:
docker run -p 5000:5000 flask-app
此时,Flask应用程序已经在Docker容器中运行,可以通过访问http://localhost:5000来访问服务。
6. Docker Compose使用
如果你的项目需要多个服务(例如,后端、数据库、缓存等),可以使用Docker Compose来管理多个容器。
6.1 创建docker-compose.yml
在项目根目录下创建一个docker-compose.yml文件。以下是一个Spring Boot和MySQL的示例:
version: '3'
services:app:image: springboot-appbuild:context: .ports:- "8080:8080"depends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: mydatabaseports:- "3306:3306"
6.2 使用Docker Compose
- 启动所有服务:
docker-compose up --build
- 停止并删除所有服务:
docker-compose down
7. 常见问题及解决方法
7.1 容器端口无法访问
- 确认容器的端口映射是否正确,使用
docker ps查看容器运行状态,确保-p <host_port>:<container_port>映射存在。 - 检查防火墙或网络设置,确保端口是开放状态。
7.2 容器内存不足
- 可以通过Docker Desktop的“Preferences” -> “Resources”来增加分配给Docker的内存。
7.3 镜像或容器清理
- 使用
docker system prune命令来清理无用的镜像和容器,释放空间:
docker system prune -a
相关文章:
【Docker】安装及使用
1. 安装Docker Desktop Docker Desktop是官方提供的桌面版Docker客户端,在Mac上使用Docker需要安装这个工具。 访问 Docker官方页面 并下载Docker Desktop for Mac。打开下载的.dmg文件,并拖动Docker图标到应用程序文件夹。安装完成后,打开…...
[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?
1. 论文简介 论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。 论文: https://arxiv.org/abs/2409.12889代码和数据: h…...
提升动态数据查询效率:应对数据库成为性能瓶颈的优化方案
引言 在现代软件系统中,数据库性能是决定整个系统响应速度和处理能力的关键因素之一。然而,当系统负载增加,特别是在高并发、大数据量场景下,数据库性能往往会成为瓶颈,导致查询响应时间延长,影响用户体验…...
Prometheus+grafana+kafka_exporter监控kafka运行情况
使用Prometheus、Grafana和kafka_exporter来监控Kafka的运行情况是一种常见且有效的方案。以下是详细的步骤和说明: 1. 部署kafka_exporter 步骤: 从GitHub下载kafka_exporter的最新版本:kafka_exporter项目地址(注意ÿ…...
在vue中:style 的几种使用方式
在日常开发中:style的使用也是比较常见的: 亲测有效 1.最通用的写法 <p :style"{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p> 2.三元表达式 <a :style"{height:…...
商城小程序后端开发实践中出现的问题及其解决方法
前言 商城小程序后端开发中,开发者可能会面临多种问题。以下是一些常见的问题及其解决方法: 一、性能优化 问题:随着用户量的增加和功能的扩展,商城小程序可能会出现响应速度慢、处理效率低的问题。 解决方法: 对数…...
阿里Arthas-Java诊断工具,基本操作和命令使用
Arthas 是阿里巴巴开源的一款Java诊断工具,深受开发者喜爱。它可以帮助开发者在不需要修改代码的情况下,对运行中的Java程序进行问题诊断和性能分析。 软件具体使用方法 1 启动 Arthas,此时可能会出现好几个jvm的进程号,输入序号…...
Go 1.19.4 路径和目录-Day 15
1. 路径介绍 存储设备保存着数据,但是得有一种方便的模式让用户可以定位资源位置,操作系统采用一种路径字符 串的表达方式,这是一棵倒置的层级目录树,从根开始。 相对路径:不是以根目录开始的路径,例如 a/b…...
jEasyUI 创建标签页
jEasyUI 创建标签页 jEasyUI(jQuery EasyUI)是一个基于jQuery的框架,它为Web应用程序提供了丰富的用户界面组件。标签页(Tabs)是jEasyUI中的一个常用组件,用于在一个页面内组织多个面板,用户可…...
鸿蒙HarmonyOS开发:一次开发,多端部署(界面级)天气应用案例
文章目录 一、布局简介二、典型布局场景三、侧边栏 SideBarContainer1、子组件2、属性3、事件 四、案例 天气应用1、UX设计2、实现分析3、主页整体实现4、具体代码 五、运行效果 一、布局简介 布局可以分为自适应布局和响应式布局,二者的介绍如下表所示。 名称简介…...
使用 Python 模拟光的折射,反射,和全反射
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
大厂太卷了!又一款国产AI视频工具上线了,免费无限使用!(附提示词宝典)
大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 记得去年刚开始分享 AI 视频工具的时候,介绍的大多…...
vue3扩展echart封装为组件库-快速复用
ECharts ECharts,全称Enterprise Charts,是一款由百度团队开发并开源,后捐赠给Apache基金会的纯JavaScript图表库。它提供了直观、生动、可交互、可个性化定制的数据可视化图表,广泛应用于数据分析、商业智能、网页开发等领域。以…...
随机掉落的项目足迹:Vue3 + wangEditor5富文本编辑器——toolbar.getConfig() 查看工具栏的默认配置
问题引入 小提示:问题引入是一个讲故事的废话环节,各位小伙伴可以直接跳到第二大点:问题解决 我的项目不需要在富文本编辑器中引入添加代码块的功能,于是我寻思在工具栏上把操作代码的菜单删一删 于是我来到官网文档工具栏配置 …...
更新 Git 软件
更新 Git 软件本身是指将你当前安装的 Git 版本升级到最新版本。不同的操作系统有不同的更新方法。以下是针对 Windows、macOS 和 Linux 的 Git 更新步骤: Windows 检查当前版本: git --version访问官网下载最新版本: 访问 Git 官方网站 (ht…...
Keil根据map文件确定单片机代码存储占用flash情况
可以从map文件中查看得知,代码占用内存情况大概为35KB,而在在线仿真时,可以看到在flash的0x8008F64地址前均有数据,是代码数据,8F64(HEX)36708(DEC),36708/102335,刚好35。因此,要想操作读写flash,必须在不…...
ByteTrack多目标跟踪流程图
ByteTrack多目标跟踪流程图 点个赞吧,谢谢。...
什么是L2范数
定义: 在数学和计算中,L2 范数是一种用于测量向量长度或大小的方法,也被称为欧几里得范数。对于一个 n 维向量 x ( x 1 , x 2 , … , x n ) \mathbf{x} (x_1, x_2, \dots, x_n) x(x1,x2,…,xn),其 L2 范数定义为&#x…...
Scrapy爬虫IP代理池:提升爬取效率与稳定性
在互联网时代,数据就是新的黄金。无论是企业还是个人,数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中,使用爬虫技术无疑是一种高效且广泛应用的方法。然而,爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…...
信息技术(IT)行业的发展
近年来,信息技术(IT)行业的发展呈现出前所未有的活力和潜力。随着全球数字化转型的加速,IT行业正逐步成为推动社会经济发展的重要引擎。无论是互联网、大数据、人工智能,还是云计算、物联网,这些新兴技术都…...
嵌入式系统中命令模式的应用与优化
1. 嵌入式系统中的误操作救赎之道在嵌入式开发中,参数配置误操作就像厨房里的盐罐打翻——一瞬间的失误可能导致整锅菜报废。上周我就遇到一个真实案例:某工业设备因为工程师误触"恢复出厂设置",导致产线上30台设备参数全部重置&am…...
5个维度教你掌握游戏自动化与效率工具开发
5个维度教你掌握游戏自动化与效率工具开发 【免费下载链接】JX3Toy 一个自动化测试DPS的小工具 项目地址: https://gitcode.com/GitHub_Trending/jx/JX3Toy 在游戏开发与玩家体验优化领域,游戏脚本开发正成为提升效率的关键技术。本文将系统介绍一款开源项目…...
2025届最火的十大AI写作工具实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作这个特定的场景之内,精确地挑选恰当的AI论文平台,能够极其…...
Driver Store Explorer终极指南:三步清理Windows冗余驱动,快速释放数十GB空间
Driver Store Explorer终极指南:三步清理Windows冗余驱动,快速释放数十GB空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间越来越…...
终极指南:如何快速构建企业级Vue3后台管理系统
终极指南:如何快速构建企业级Vue3后台管理系统 【免费下载链接】vue3-element-admin 🔥基于 Vue 3 Vite 7 TypeScript element-plus 构建的后台管理前端模板(配套后端源码),vue-element-admin 的 vue3 版本。 项目…...
浅析 Python 中数据离散化的实现方式
一、什么是数据离散化?在数据分析和机器学习的预处理阶段,数据离散化是一个非常核心且常用的操作。简单来说,数据离散化就是将连续的数值型数据,按照一定的规则划分成若干个离散的区间 / 类别。连续数据:身高ÿ…...
汽车行业空气动力学仿真Fluent的license分点方案
汽车行业空气动力学仿真Fluent的License分点方案你是绝非老是在项目高峰时段发现Fluent的License不够用了,而且平时又有数来空闲许可在浪费?你是不光是也在担心合规风险,搞不好一不小心就超了额度,被软件商追着要钱?实…...
3大优势让学术翻译更安全:Zotero PDF翻译插件离线方案全解析
3大优势让学术翻译更安全:Zotero PDF翻译插件离线方案全解析 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mi…...
OpenClaw+Phi-3-vision-128k-instruct对比测试:图文问答精度超越纯文本模型3倍
OpenClawPhi-3-vision-128k-instruct对比测试:图文问答精度超越纯文本模型3倍 1. 测试背景与动机 最近在探索多模态模型的实际应用价值时,我注意到微软发布的Phi-3-vision-128k-instruct模型在图文理解方面有突出表现。作为一个长期使用OpenClaw进行自…...
告别手动测试:用快马AI生成telnet端口批量检测脚本,效率提升十倍
最近在运维工作中频繁遇到需要批量检测服务器telnet端口连通性的需求。手动一台台测试不仅效率低下,还容易出错。经过一番摸索,我总结出一套用Python快速实现批量检测的方案,效率比手工操作提升了十倍不止。这里分享下具体实现思路和优化经验…...
