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

【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-app
    build:
      context: .
    ports:
      - "8080:8080"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
    ports:
      - "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.kler.cn/a/313185.html

相关文章:

  • 【C语言】值传递和地址传递
  • win11 新建一个批处理,双击查看本机的IP地址
  • 1.7 JS性能优化
  • 【最新版】Stable Diffusion4.9(AI绘画)下载及安装教程(附软件安装包)!
  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性
  • C获取程序名称的方法
  • EmguCV学习笔记 C# 12.3 OCR
  • Vue vs React vs Angular 的区别和选择
  • 数据结构-2.9.双链表
  • 周末愉快!——周复盘
  • 深度学习-03 Pytorch
  • Android 空气质量刻度
  • CleanClip For Mac 強大的剪貼簿助手Paste替代工具 v2.2.1
  • 学习笔记——EffcientNetV2
  • React——点击事件函数调用问题
  • Gradio离线部署到内网,资源加载失败问题(Gradio离线部署问题解决方法)
  • docker搭建个人网盘,支持多种格式,还能画图,一键部署
  • Matlab可视化│常用绘图全家桶
  • HTTP中的301、302实现重定向
  • ActivityManagerService 分发广播(6)
  • Vue3:reactive丢失响应式,数据有更新但表单没有更新
  • gin配置swagger文档
  • 树与图的深度优先遍历(dfs的图论中的应用)
  • 【CPP】类与继承
  • [原创]全新安装最新版Delphi 12.2之前, 如何正确卸载旧版Delphi 12.1?
  • 谈对象第二弹: C++类和对象(中)