【Docker】安装及使用

embedded/2024/9/23 18:34:37/

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命令,后面会详细介绍这些命令在开发中的具体应用:

4. Java后端开发中使用Docker

假设我们有一个Java Spring Boot项目,我们可以通过Docker来运行它。

4.1 创建Dockerfile

首先,在项目的根目录下创建一个名为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文件:

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来管理多个容器

dockercomposeyml_134">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

http://www.ppmy.cn/embedded/115724.html

相关文章

git 问题 --- fatal: detected dubious ownership in repository at

在通过 Git Bash 提交项目代码时输入 git pull 或git add . 命令后&#xff0c;报错&#xff1a;fatal: detected dubious ownership in repository at 这是因为该项目的所有者与现在的用户不一致 比如说&#xff1a; 该项目的所有者是 Administrator&#xff0c;而当前用户是…

2024自学手册——网络安全(黑客技术)

前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 如何成为一名黑客 很多朋友在学习安全方面都会半路转行&#xff0c…

CTF 技能树 LOG -GIT泄露 笔记

log 使用虚拟机kali操作 python2 安装 apt-get install python2 进入root用户&#xff0c;下载克隆git hack库 git clone https://github.com/BugScanTeam/GitHack sudo passwd root 修改root 命名密码为root 切换登录 su root 终端进入home/kali/GitHack/ python GitH…

MATLAB中的模型预测控制(MPC)实现详解

模型预测控制&#xff08;MPC&#xff09;是一种基于模型的优化控制策略&#xff0c;广泛应用于工业过程控制、无人驾驶、机器人等领域。MPC通过预测未来的系统行为&#xff0c;优化控制输入以达到预期的控制目标。本文将详细介绍如何在MATLAB中实现MPC&#xff0c;包括基本原理…

Linux:进程状态和优先级

一、进程状态 1.1 操作系统学科&#xff08;运行、阻塞、挂起&#xff09; 为了弄明白正在运行的进程是什么意思&#xff0c;我们需要知道进程的不同状态 大多数操作系统都遵循以下原则 1.1.1 运行状态 因为有一个调度器需要确保CPU的资源被合理使用&#xff0c;所以需要维护…

基于Springboot的助学金管理系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 一、研究背景 利用计算机来实现助学金管理系统&#xff0c;已经成为一种趋势&#xff0c;相比传统的手工管理方式&#xff0c;利用软件进行助学金管理系统&#xff0c;有着执行快&#xff0c;可行性高、容量存储大&#xff0c;…

全流程管理的商标管理软件如何实现一站式品牌保护?

如今&#xff0c;企业对于商标管理的需求已不再局限于单一的申请流程&#xff0c;而是扩展到了包括撤三、无效宣告、异议处理、维权行动乃至诉讼解决在内的全业务范畴。面对这一复杂多变的挑战&#xff0c;一款能够灵活应对、全面覆盖的可全业务管理商标管理软件成为了企业品牌…

面试题:react、vue中的key有什么作用?(key的内部原理)

1.虚拟DOM中key的作用: key是虚拟DOM对象的标识&#xff0c;当数据发生变化时&#xff0c;vue会根据【新数据】生成【新的虚拟DOM】随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较&#xff0c;比较规则如下: 2.对比规则: (1).旧虚拟DOM中找到了与新虚拟DOM相同的key: …