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

[特殊字符] Docker 从入门到实战:全流程教程 + 项目部署指南(含镜像加速)

Docker 是现代 DevOps 的基石,应用广泛于微服务、CI/CD、K8s、云原生等场景。本文将从 0 到 1 手把手带你掌握 Docker 的核心知识点,并完成 Java + Nginx 项目部署,适合新手与进阶开发者阅读与实战。


📚 目录

  1. Docker 快速入门

  2. 入门命令

  3. CentOS7 安装 Docker & Compose

  4. 配置镜像加速器(推荐)

  5. Docker 常用命令速查

  6. 数据卷:持久化数据共享

  7. Dockerfile 编写语法详解

  8. Docker 网络机制

  9. Java + Nginx 项目部署

  10. Docker Compose 使用指南

  11. 总结与推荐


1️⃣ Docker 快速入门

Docker 是一个开源的容器化平台,允许开发者将应用和依赖封装为轻量、可移植的容器,运行在任意平台。

快速测试:

docker run hello-world

输出 Hello from Docker 表示环境配置成功 🎉。


2️⃣ Docker 入门命令

命令含义
docker run启动容器
docker ps查看运行容器
docker ps -a查看所有容器(包括停止的)
docker stop停止容器
docker rm删除容器
docker images查看本地镜像
docker rmi删除镜像
docker exec -it进入容器终端
docker logs查看日志

3️⃣ CentOS7 安装 Docker & Compose

安装 Docker CE

sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
docker version

安装 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version

4️⃣ 配置镜像加速器(推荐)

解决 Docker 拉取镜像慢或失败的问题。

编辑加速配置:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"]
}
EOFsudo systemctl daemon-reexec
sudo systemctl restart docker
docker info | grep Registry

推荐国内加速地址:

  • 阿里云:https://<你的ID>.mirror.aliyuncs.com

  • 网易云:https://hub-mirror.c.163.com

  • 清华大学:https://registry.tuna.tsinghua.edu.cn

  • 中科大:https://docker.mirrors.ustc.edu.cn


5️⃣ Docker 常用命令速查

docker build -t myapp .           # 构建镜像
docker run -d --name app myapp    # 运行容器
docker stop/start app             # 启动/停止
docker logs -f app                # 查看日志
docker exec -it app /bin/bash     # 进入容器终端
docker system prune               # 清理所有无用资源

6️⃣ Docker 数据卷:持久化数据共享

方式一:绑定宿主机目录

docker run -v /host/data:/app/data myapp

方式二:命名卷

docker volume create mydata
docker run -v mydata:/app/data myapp

查看数据卷:

docker volume ls

7️⃣ Dockerfile 语法详解

Dockerfile 是构建镜像的核心文件。

常见指令:

指令功能说明
FROM指定基础镜像
WORKDIR设置工作目录
COPY拷贝文件到镜像
RUN构建时执行命令
CMD默认启动命令
ENTRYPOINT容器入口
EXPOSE声明端口
ENV环境变量

示例 Dockerfile(Java 项目)

FROM openjdk:17
WORKDIR /app
COPY target/myapp.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

构建并运行:

docker build -t my-java-app .
docker run -d -p 8080:8080 my-java-app

8️⃣ Docker 网络机制

Docker 支持多种网络模式:

模式说明
bridge默认网络,容器间通信
host容器共享宿主机网络
none无网络

自定义网络

docker network create mynet
docker run --network mynet --name app myapp

9️⃣ Java + Nginx 项目部署

1️⃣ Nginx 容器

docker run -d --name nginx \-p 80:80 \-v /my/nginx.conf:/etc/nginx/nginx.conf:ro \nginx:latest

2️⃣ Java 容器

docker run -d --name java-app \--network mynet \-p 8080:8080 \my-java-app

🔟 Docker Compose 使用指南

用于管理多个容器的编排工具。

示例 docker-compose.yml

version: "3.9"
services:java:build: .ports:- "8080:8080"networks:- appnetnginx:image: nginxports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf:ronetworks:- appnetnetworks:appnet:

常用命令

docker-compose up -d        # 启动服务
docker-compose down         # 停止并清理
docker-compose logs -f      # 实时日志
docker-compose exec java bash

🔚 11. 总结与推荐

本文涵盖了:

✅ Docker 安装与镜像加速配置
✅ 镜像构建与容器运行命令
✅ Dockerfile 语法 + 数据卷 + 网络
✅ Java + Nginx 容器化部署
✅ Docker Compose 多容器协同管理

💡 Docker 是现代云原生开发与部署的必备技能,建议结合实际项目反复实践加深理解。

http://www.xdnf.cn/news/135433.html

相关文章:

  • 欧拉安装宝塔等,报错Errors during downloading metadata for repository ‘OS‘
  • 视频监控管理平台EasyCVR安防攻略:告别传统监控局限,视频监控上墙有哪些方式?
  • 【Python数据库编程实战】从SQL到ORM的完整指南
  • 基于Node+HeadlessBrowser的浏览器自动化方案
  • MCP协议:AI与工具无缝连接的“万能插头“及最佳实践指南
  • 2.1java基础语法
  • Cancer Cell发表医学AI综述,聚焦于人工智能与转化癌症研究的交叉领域
  • Pandas中的日期时间date处理
  • Python-Agent调用多个Server-FastAPI版本
  • 融合注意力机制和BiGRU的电力领域发电量预测项目研究,并给出相关代码
  • 代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)
  • 精益数据分析(24/126):聚焦第一关键指标,驱动创业成功
  • Java 安全:如何实现用户认证与授权?
  • 如何在JDK17项目中改成1.8
  • JDBC 批处理与事务处理:提升数据操作效率与一致性的密钥
  • Spring的xxxAware接口工作原理-笔记
  • 时间序列预测模型比较分析:SARIMAX、RNN、LSTM、Prophet 及 Transformer
  • 深入剖析扣子智能体的工作流与实战案例
  • 【MySQL】MySQL索引与事务
  • cuda 安装两个版本
  • 【使用层次序列构建二叉树(数据结构C)】
  • 探秘 3D 展厅之卓越优势,解锁沉浸式体验新境界
  • 零基础上手Python数据分析 (23):NumPy 数值计算基础 - 数据分析的加速“引擎”
  • Vue3实现高仿word自定义颜色选择器组件(支持 v-model)
  • 哈工大李治军《操作系统》进程同步与信号量笔记
  • iOS/Flutter混合开发之PlatformView配置与使用
  • 第12章 微调生成模型
  • 实时交互式AIGC系统开发:打造多模态数字人全栈解决方案
  • 41.缺失的第一个正数(java)
  • jQuery AJAX、Axios与Fetch