Docker入门到部署:从零基础到项目实战

Docker从入门到项目实战

Docker入门到部署:从零基础到项目实战

一、Docker概述

1.1 什么是Docker?

Docker是一个开源的容器化平台,用于快速构建、运行和管理应用程序。它通过镜像和容器技术实现应用的快速部署与隔离运行,解决了"在我机器上能跑"的环境一致性问题。

1.2 核心概念对比

概念说明类比
镜像(Image)包含应用及其运行环境、配置的只读模板,类似于安装包软件安装程序(.exe)
容器(Container)镜像的运行实例,是隔离的进程空间正在运行的程序
数据卷(Volume)容器与宿主机间的数据共享机制,实现数据持久化移动硬盘
仓库(Repository)存储和分发镜像的服务,Docker Hub是官方公共仓库应用商店

二、Docker基础操作

2.1 安装与配置

以CentOS为例:


bash

# 卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
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

# 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动服务
sudo systemctl start docker
sudo systemctl enable docker

2.2 常用命令速查表

命令作用示例
docker pull拉取镜像docker pull nginx:1.21
docker images查看本地镜像docker images -a
docker run创建并运行容器docker run -d --name mynginx -p 80:80 nginx
docker ps查看运行中的容器docker ps -a
docker exec进入运行中的容器docker exec -it mynginx bash
docker stop停止容器docker stop mynginx
docker rm删除容器docker rm mynginx
docker rmi删除镜像docker rmi nginx:1.21
docker logs查看容器日志docker logs -f mynginx

三、核心功能实战

3.1 数据卷管理

创建并挂载数据卷:


bash

# 创建数据卷
docker volume create myvol

# 查看数据卷详情
docker volume inspect myvol

# 挂载数据卷运行容器
docker run -d --name mysql -v myvol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7

# 清理未使用数据卷
docker volume prune

3.2 网络配置


bash

# 创建自定义网络
docker network create mynet

# 查看网络列表
docker network ls

# 将容器连接到网络
docker network connect mynet mysql

# 断开网络连接
docker network disconnect mynet mysql

四、自定义镜像构建

4.1 Dockerfile详解

示例:构建Java应用镜像


dockerfile

# 第一阶段:构建环境
FROM maven:3.8.5 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests

# 第二阶段:运行环境
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

构建命令:


bash

docker build -t myjavaapp:1.0 .

4.2 多阶段构建优势

  1. 减小最终镜像体积(只包含运行时环境)
  2. 构建过程更安全(不包含构建工具)
  3. 优化构建缓存(分层构建)

五、项目部署实战

5.1 单容器部署MySQL


bash

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v ./mysql/data:/var/lib/mysql \
  -v ./mysql/conf:/etc/mysql/conf.d \
  mysql:8.0

5.2 Docker Compose多容器编排

docker-compose.yml示例:


yaml

version: "3.8"

services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/conf:/etc/mysql/conf.d"
    networks:
      - mynet

  app:
    build: .
    container_name: myapp
    ports:
      - "8080:8080"
    depends_on:
      - mysql
    networks:
      - mynet

  nginx:
    image: nginx:1.21
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - "./nginx/conf:/etc/nginx/conf.d"
      - "./nginx/html:/usr/share/nginx/html"
    depends_on:
      - app
    networks:
      - mynet

networks:
  mynet:
    name: myapp-network

常用命令:


bash

# 启动所有服务
docker compose up -d

# 查看服务状态
docker compose ps

# 停止服务
docker compose down

# 查看日志
docker compose logs -f app

六、最佳实践建议

  1. 镜像优化

    • 使用.dockerignore文件排除无关文件
    • 多阶段构建减小镜像体积
    • 合并RUN指令减少镜像层数
  2. 安全建议

    • 不要使用root用户运行容器
    • 定期更新基础镜像
    • 限制容器资源使用(CPU/内存)
  3. 生产环境建议

    • 使用容器编排工具(Kubernetes)
    • 实现日志集中管理
    • 设置健康检查机制

通过本文的学习,您已经掌握了Docker从基础到项目部署的全流程。Docker技术正在成为现代应用开发和部署的标准工具,掌握它将大大提升您的开发效率和部署能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值