[特殊字符] 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"
  ]
}
EOF

sudo systemctl daemon-reexec
sudo systemctl restart docker
docker info | grep Registry

推荐国内加速地址:


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:
      - appnet

  nginx:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    networks:
      - appnet

networks:
  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 是现代云原生开发与部署的必备技能,建议结合实际项目反复实践加深理解。

相关推荐
还是鼠鼠4 分钟前
JavaWeb RESTful 开发规范入门
java·数据库·spring boot·后端·spring·mybatis·restful
ThisIsClark6 分钟前
【Kubernetes】以LOL的视角打开K8s
游戏·云原生·容器·kubernetes·lol
彼将取而代之1 小时前
从头搭建环境安装k8s遇到的问题
云原生·容器·kubernetes
cui_win1 小时前
【内存】Linux 内核优化实战 - vm.max_map_count
linux·运维·jenkins
Fireworkitte1 小时前
在 CI/CD 流程中使用 Jenkins 与 Docker 集成
ci/cd·docker·jenkins
遗忘妳1 小时前
LVS 负载均衡群集
运维·负载均衡·lvs
problc1 小时前
n8n:轻松自动化您的工作流
运维·人工智能·自动化
风象南1 小时前
SpringBoot的4种数据水平分片策略
java·spring boot·后端
ALe要立志成为web糕手1 小时前
docker安全
安全·web安全·docker·云安全
@ chen1 小时前
Spring Boot自动装配原理解析
java·spring boot·后端