> 技术文档 > Docker-快速构建、运行、管理应用的工具

Docker-快速构建、运行、管理应用的工具

Docker-快速构建、运行、管理应用的工具
🐳 Docker 基础
“Docker 是一个快速构建、运行和管理应用的工具,能够帮助开发者以更简单的方式进行应用的部署和管理。”

  1. Docker 的核心概念
    1.1 镜像容器
    镜像(Image):包含应用及其所需的环境、配置和系统库的打包文件。
    容器(Container):运行镜像时创建的隔离环境,每个镜像可以启动一个或多个容器。
    1.2 镜像仓库
    镜像仓库:存储和管理镜像的平台,Docker Hub 是最大的公共镜像仓库。
  2. Docker 命令解析
    2.1 常见命令
    命令说明
    docker run创建并运行一个容器
    docker pull从镜像仓库拉取镜像
    docker push推送镜像到镜像仓库
    docker ps查看正在运行的容器
    docker stop停止运行中的容器
    docker rm删除一个或多个容器
    docker images查看本地镜像列表
    docker rmi删除一个或多个镜像
    2.2 部署 MySQL
    命令示例:
    bash
    Copy
    docker run -d --name ms -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql
    说明:
    -d:让容器在后台运行。
    –name ms:容器命名为 ms,必须唯一。
    -p 3306:3306:将宿主机的 3306 端口映射到容器的 3306 端口。
    -e MYSQL_ROOT_PASSWORD=123:设置环境变量,定义 MySQL 的 root 密码。
    2.3 镜像命名规范
    镜像名称格式为 [repository]:[tag]。
    默认情况下,tag 为 latest 代表最新版本。
  3. 数据卷(Volume)
    3.1 数据卷的作用
    数据卷是一个虚拟目录,用于映射容器内目录与宿主机目录之间的桥梁,方便容器内文件的操作和数据迁移。
    3.2 常见数据卷命令
    命令说明
    docker volume create创建数据卷
    docker volume ls查看所有数据卷
    docker volume rm删除指定数据卷
    docker volume inspect查看某个数据卷的详情
    docker volume prune清除未使用的数据卷
  4. 自定义镜像
    4.1 Dockerfile 的作用
    Dockerfile:一个文本文件,定义了构建镜像的指令和过程。常见指令如下:
    指令说明示例
    FROM指定基础镜像FROM centos:6
    ENV设置环境变量ENV key value
    COPY拷贝本地文件到镜像的指定目录COPY ./jre11.tar.gz /tmp
    RUN执行 Linux 的 shell 命令RUN apt-get install -y package
    EXPOSE指定容器运行时监听的端口EXPOSE 8080
    ENTRYPOINT镜像中应用的启动命令ENTRYPOINT java -jar xx.jar
    4.2 构建镜像命令
    使用以下命令构建镜像:
    bash
    Copy
    docker build -t 镜像名 Dockerfile目录
  5. Docker Compose
    5.1 Docker Compose 介绍
    Docker Compose:通过一个 docker-compose.yml 文件定义一组相关联的应用容器,帮助实现多个容器的快速部署。
    5.2 示例配置
    yaml
    Copy
    version: “3.8”
    services:
    mysql:
    image: mysql
    container_name: mysql
    ports:
    • “3306:3306”
      environment:
      MYSQL_ROOT_PASSWORD: 123
      volumes:
    • “./mysql/data:/var/lib/mysql”
  6. 网络配置
    6.1 默认网络
    默认情况下,所有容器通过 bridge 方式连接到 Docker 的虚拟网桥上。
    6.2 自定义网络命令
    命令说明
    docker network create创建一个网络
    docker network ls查看所有网络
    docker network rm删除指定网络
    docker network prune清除未使用的网络
  7. 项目部署
    7.1 部署 Java 应用
    需求:将 Java 项目打包为镜像并部署,镜像名为 hmall。
    7.2 部署前端
    需求:创建一个新的 Nginx 容器,将配置文件和 HTML 目录挂载到容器中。
    🐳 Docker Compose 概述
    “Docker Compose 通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的 Docker 容器的快速部署。”

Docker Compose 文件结构
示例配置
以下是一个 Docker Compose 文件的示例,定义了 MySQL 和 Nginx 服务:

yaml
Copy
version: “3.8”

services:
mysql:
image: mysql
container_name: mysql
ports:
- “3306:3306”
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- “./mysql/conf:/etc/mysql/conf.d”
- “./mysql/data:/var/lib/mysql”
- “./mysql/init:/docker-entrypoint-initdb.d”
networks:
- hmall

nginx:
image: nginx
container_name: nginx
ports:
- “18080:18080”
- “18081:18081”
volumes:
- “./nginx/nginx.conf:/etc/nginx/nginx.conf”
- “./nginx/html:/etc/nginx/html”
depends_on:
- hmall
networks:
- new

networks:
new:
name: hmall
启动 MySQL 容器
使用以下命令启动 MySQL 容器:

bash
Copy
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
-v ./mysql/init:/docker-entrypoint-initdb.d
–network hmall
mysql
Docker Compose 命令格式
命令和选项
类型参数或指令说明
Options-f指定 compose 文件的路径和名称
-p指定 project 名称
Commandsup创建并启动所有 service 容器
down停止并移除所有容器、网络
ps列出所有启动的容器
logs查看指定容器的日志
stop停止容器
start启动容器
restart重启容器
top查看运行的进程
exec在指定的运行中容器中执行命令
关键概念
服务(Services): 定义在 Docker Compose 文件中的应用容器。
网络(Networks): 用于定义服务之间的通信方式。
卷(Volumes): 用于持久化数据,确保数据在容器重启后依然可用。
小结
Docker Compose 使得管理多个 Docker 容器变得简单,通过 YAML 文件结构化定义服务的配置,用户可以快速部署和管理容器化应用。
Docker-快速构建、运行、管理应用的工具