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

【Docker】安装及使用

1. 安装Docker Desktop

Docker Desktop是官方提供的桌面版Docker客户端,在Mac上使用Docker需要安装这个工具。

  1. 访问 Docker官方页面 并下载Docker Desktop for Mac。
  2. 打开下载的.dmg文件,并拖动Docker图标到应用程序文件夹。
  3. 安装完成后,打开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 构建镜像并运行容器

  1. 在项目根目录打开终端,运行以下命令构建镜像:
docker build -t springboot-app .
  1. 构建完成后,运行镜像并创建容器:
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 构建镜像并运行容器

  1. 构建镜像:
docker build -t flask-app .
  1. 运行镜像并创建容器:
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

  1. 启动所有服务:
docker-compose up --build
  1. 停止并删除所有服务:
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客户端&#xff0c;在Mac上使用Docker需要安装这个工具。 访问 Docker官方页面 并下载Docker Desktop for Mac。打开下载的.dmg文件&#xff0c;并拖动Docker图标到应用程序文件夹。安装完成后&#xff0c;打开…...

[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨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&#xff0c;在2024.09.19提交到arXiv上的研究论文。 论文: https://arxiv.org/abs/2409.12889代码和数据: h…...

提升动态数据查询效率:应对数据库成为性能瓶颈的优化方案

引言 在现代软件系统中&#xff0c;数据库性能是决定整个系统响应速度和处理能力的关键因素之一。然而&#xff0c;当系统负载增加&#xff0c;特别是在高并发、大数据量场景下&#xff0c;数据库性能往往会成为瓶颈&#xff0c;导致查询响应时间延长&#xff0c;影响用户体验…...

Prometheus+grafana+kafka_exporter监控kafka运行情况

使用Prometheus、Grafana和kafka_exporter来监控Kafka的运行情况是一种常见且有效的方案。以下是详细的步骤和说明&#xff1a; 1. 部署kafka_exporter 步骤&#xff1a; 从GitHub下载kafka_exporter的最新版本&#xff1a;kafka_exporter项目地址&#xff08;注意&#xff…...

在vue中:style 的几种使用方式

在日常开发中:style的使用也是比较常见的&#xff1a; 亲测有效 1.最通用的写法 <p :style"{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p> 2.三元表达式 <a :style"{height:…...

商城小程序后端开发实践中出现的问题及其解决方法

前言 商城小程序后端开发中&#xff0c;开发者可能会面临多种问题。以下是一些常见的问题及其解决方法&#xff1a; 一、性能优化 问题&#xff1a;随着用户量的增加和功能的扩展&#xff0c;商城小程序可能会出现响应速度慢、处理效率低的问题。 解决方法&#xff1a; 对数…...

阿里Arthas-Java诊断工具,基本操作和命令使用

Arthas 是阿里巴巴开源的一款Java诊断工具&#xff0c;深受开发者喜爱。它可以帮助开发者在不需要修改代码的情况下&#xff0c;对运行中的Java程序进行问题诊断和性能分析。 软件具体使用方法 1 启动 Arthas&#xff0c;此时可能会出现好几个jvm的进程号&#xff0c;输入序号…...

Go 1.19.4 路径和目录-Day 15

1. 路径介绍 存储设备保存着数据&#xff0c;但是得有一种方便的模式让用户可以定位资源位置&#xff0c;操作系统采用一种路径字符 串的表达方式&#xff0c;这是一棵倒置的层级目录树&#xff0c;从根开始。 相对路径&#xff1a;不是以根目录开始的路径&#xff0c;例如 a/b…...

jEasyUI 创建标签页

jEasyUI 创建标签页 jEasyUI&#xff08;jQuery EasyUI&#xff09;是一个基于jQuery的框架&#xff0c;它为Web应用程序提供了丰富的用户界面组件。标签页&#xff08;Tabs&#xff09;是jEasyUI中的一个常用组件&#xff0c;用于在一个页面内组织多个面板&#xff0c;用户可…...

鸿蒙HarmonyOS开发:一次开发,多端部署(界面级)天气应用案例

文章目录 一、布局简介二、典型布局场景三、侧边栏 SideBarContainer1、子组件2、属性3、事件 四、案例 天气应用1、UX设计2、实现分析3、主页整体实现4、具体代码 五、运行效果 一、布局简介 布局可以分为自适应布局和响应式布局&#xff0c;二者的介绍如下表所示。 名称简介…...

使用 Python 模拟光的折射,反射,和全反射

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

大厂太卷了!又一款国产AI视频工具上线了,免费无限使用!(附提示词宝典)

大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 记得去年刚开始分享 AI 视频工具的时候&#xff0c;介绍的大多…...

vue3扩展echart封装为组件库-快速复用

ECharts ECharts&#xff0c;全称Enterprise Charts&#xff0c;是一款由百度团队开发并开源&#xff0c;后捐赠给Apache基金会的纯JavaScript图表库。它提供了直观、生动、可交互、可个性化定制的数据可视化图表&#xff0c;广泛应用于数据分析、商业智能、网页开发等领域。以…...

随机掉落的项目足迹:Vue3 + wangEditor5富文本编辑器——toolbar.getConfig() 查看工具栏的默认配置

问题引入 小提示&#xff1a;问题引入是一个讲故事的废话环节&#xff0c;各位小伙伴可以直接跳到第二大点&#xff1a;问题解决 我的项目不需要在富文本编辑器中引入添加代码块的功能&#xff0c;于是我寻思在工具栏上把操作代码的菜单删一删 于是我来到官网文档工具栏配置 …...

更新 Git 软件

更新 Git 软件本身是指将你当前安装的 Git 版本升级到最新版本。不同的操作系统有不同的更新方法。以下是针对 Windows、macOS 和 Linux 的 Git 更新步骤&#xff1a; Windows 检查当前版本&#xff1a; git --version访问官网下载最新版本&#xff1a; 访问 Git 官方网站 (ht…...

Keil根据map文件确定单片机代码存储占用flash情况

可以从map文件中查看得知&#xff0c;代码占用内存情况大概为35KB,而在在线仿真时&#xff0c;可以看到在flash的0x8008F64地址前均有数据&#xff0c;是代码数据&#xff0c;8F64(HEX)36708(DEC),36708/102335,刚好35。因此&#xff0c;要想操作读写flash&#xff0c;必须在不…...

ByteTrack多目标跟踪流程图

ByteTrack多目标跟踪流程图 点个赞吧&#xff0c;谢谢。...

什么是L2范数

定义&#xff1a; 在数学和计算中&#xff0c;L2 范数是一种用于测量向量长度或大小的方法&#xff0c;也被称为欧几里得范数。对于一个 n 维向量 x ( x 1 , x 2 , … , x n ) \mathbf{x} (x_1, x_2, \dots, x_n) x(x1​,x2​,…,xn​)&#xff0c;其 L2 范数定义为&#x…...

Scrapy爬虫IP代理池:提升爬取效率与稳定性

在互联网时代&#xff0c;数据就是新的黄金。无论是企业还是个人&#xff0c;数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中&#xff0c;使用爬虫技术无疑是一种高效且广泛应用的方法。然而&#xff0c;爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…...

信息技术(IT)行业的发展

近年来&#xff0c;信息技术&#xff08;IT&#xff09;行业的发展呈现出前所未有的活力和潜力。随着全球数字化转型的加速&#xff0c;IT行业正逐步成为推动社会经济发展的重要引擎。无论是互联网、大数据、人工智能&#xff0c;还是云计算、物联网&#xff0c;这些新兴技术都…...

C++primer第十一章使用类(矢量随机游走实例)

操作符重载 操作符重载(operator overoading)是一种形式的 C多态。 第8章介绍了C是如何使用户能够定义多个名称相同但特征标(参数列表)不同的函数的。这被称为函数重载(function overloading)或函数多态(functional polymorphism)&#xff0c;旨在让您能够用同名的函数来完成…...

服务器为什么会受到网络攻击?

随着科技的 快速发展&#xff0c;企业也开展了越来越多的线上业务&#xff0c;但同时也遭受到各种各样的网络攻击&#xff0c;那服务器为什么会受到网络攻击呢&#xff1f;下面就让小编带领大家一起来了解一下吧&#xff01; 首先企业中服务器被攻击的原因有很多&#xff0c;主…...

IDA Pro基本使用

IDA Pro基本使用 1.DllMain的地址是什么? 打开默认在的位置1000D02E就是DllMain地址 按空格键可以看到图形化界面选择options、general勾选对应的选项在图像化也能看到 2.使用Imports 窗口并浏览到 gethostbyname&#xff0c;导入函数定位到什么地址? 这里可以打开Impo…...

Day.js时间插件的安装引用与常用方法大全

&#x1f680; 个人简介&#xff1a;某大型国企资深软件研发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…...

aws 容器镜像仓库操作

aws 容器镜像仓库产品叫ECR&#xff0c;官方文档参考&#xff1a;Amazon Elastic Container Registry。 1&#xff09;账号认证 # 配置aws命令 $ aws configure set aws_access_key_id ${ak} $ aws configure set aws_secret_access_key ${sk} 2&#xff09;镜像仓库登陆 #…...

学习记录:js算法(四十一): 基于时间的键值存储

文章目录 基于时间的键值存储网上思路 总结 基于时间的键值存储 设计一个基于时间的键值数据结构&#xff0c;该结构可以在不同时间戳存储对应同一个键的多个值&#xff0c;并针对特定时间戳检索键对应的值。 实现 TimeMap 类&#xff1a; TimeMap() 初始化数据结构对象void se…...

C语言 | Leetcode C语言题解之第424题替换后的最长重复字符

题目&#xff1a; 题解&#xff1a; int characterReplacement(char* s, int k) {int num[26];memset(num, 0, sizeof(num));int n strlen(s);int maxn 0;int left 0, right 0;while (right < n) {num[s[right] - A];maxn fmax(maxn, num[s[right] - A]);if (right - …...

大数据时代的PDF解析:技术与挑战

在大数据时代&#xff0c;海量信息以不同格式存储&#xff0c;其中 PDF 文件凭借其广泛应用成为了各种业务场景下的主要文档格式。无论是政府文件、企业报告&#xff0c;还是学术论文和技术文档&#xff0c;PDF 都是信息交流的重要媒介。然而&#xff0c;随着信息的爆炸式增长&…...

《nmap 命令全解析:网络探测与安全扫描的利器》

文章目录 一、引言二、nmap 命令概述三、nmap 基本用法&#xff08;一&#xff09;安装 nmap&#xff08;二&#xff09;简单扫描示例 四、nmap 常见参数&#xff08;一&#xff09;-sS&#xff08;TCP SYN 扫描&#xff09;&#xff08;二&#xff09;-sT&#xff08;TCP 连接…...

2024年华为OD机试真题-斗地主之顺子-Python-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。 题目描述 在斗地主只扑克牌游戏中,…...