自学内容网 自学内容网

【Docker】Docker 实践与应用举例

Docker 是一个开源平台,用于自动化部署、扩展和管理应用程序的容器。它允许开发者将应用及其依赖打包成一个标准化的单位,称为容器,这样可以确保在任何环境中都能一致地运行。本文将详细介绍 Docker 的基本概念、实践步骤及具体应用示例,并提供相关表格和图示以帮助理解。

1. Docker 基本概念

概念描述
容器轻量级、可移植的封装了应用的运行环境
镜像容器的可执行包,包含应用及其所有依赖
Dockerfile用于构建镜像的文本文件,定义了镜像的内容
Docker Hub官方的镜像仓库,用于存储和共享镜像

工作原理

Docker 利用操作系统级别的虚拟化技术,通过 Linux 内核的命名空间和控制组实现容器的隔离和资源管理。

使用 Docker CLI
管理容器
使用镜像
从 Docker Hub
用户
Docker Daemon
容器
镜像
镜像仓库

2. Docker 安装

2.1 安装步骤

以Ubuntu 系统为例:

# 更新软件包索引
sudo apt-get update

# 安装必要的软件包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加 Docker 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 更新软件包索引
sudo apt-get update

# 安装 Docker CE
sudo apt-get install docker-ce

# 启动 Docker 服务
sudo systemctl start docker

2.2 验证安装

运行以下命令检查 Docker 是否安装成功:

docker --version

3. Docker 实践

3.1 创建第一个 Docker 容器

  1. 拉取镜像

    使用 docker pull 命令拉取一个基本的 Ubuntu 镜像:

    docker pull ubuntu
    
  2. 创建并运行容器

    使用 docker run 命令创建并启动一个新容器:

    docker run -it ubuntu /bin/bash
    

    这将进入容器的交互式终端。

  3. 退出容器

    输入 exit 退出容器。

3.2 管理容器

命令描述
docker ps列出正在运行的容器
docker ps -a列出所有容器(包括已停止的)
docker stop <container_id>停止指定容器
docker rm <container_id>删除指定容器

3.3 创建 Dockerfile

Dockerfile 是构建自定义镜像的基础,下面是一个简单的示例 Dockerfile:

# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:latest

# 将本地的 HTML 文件复制到容器内
COPY ./html /usr/share/nginx/html

# 暴露容器的80端口
EXPOSE 80
  1. 构建镜像

使用以下命令构建镜像:

docker build -t my-nginx .
  1. 运行镜像

运行新镜像并映射端口:

docker run -d -p 8080:80 my-nginx

3.4 数据卷

数据卷用于持久化存储。创建数据卷的命令如下:

docker volume create my-volume

使用数据卷运行容器:

docker run -d -v my-volume:/data my-nginx

4. 应用举例

4.1 Web 应用部署

示例:使用 Docker 部署一个简单的 Node.js 应用

  1. 创建项目结构

    mkdir my-node-app
    cd my-node-app
    mkdir src
    
  2. 编写 Node.js 应用

    src 目录下创建 app.js 文件,内容如下:

    const http = require('http');
    const hostname = '0.0.0.0';
    const port = 3000;
    
    const server = http.createServer((req, res) => {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Hello Docker!\n');
    });
    
    server.listen(port, hostname, () => {
        console.log(`Server running at http://${hostname}:${port}/`);
    });
    
  3. 创建 Dockerfile

    在项目根目录下创建 Dockerfile,内容如下:

    FROM node:14
    WORKDIR /usr/src/app
    COPY ./src ./
    RUN npm install
    CMD ["node", "app.js"]
    EXPOSE 3000
    
  4. 构建和运行镜像

    docker build -t my-node-app .
    docker run -d -p 3000:3000 my-node-app
    
  5. 访问应用

    在浏览器中访问 http://localhost:3000,你将看到 “Hello Docker!” 的信息。

4.2 数据库容器化

使用 Docker 部署 MySQL 数据库:

docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

4.3 多容器应用

使用 Docker Compose 管理多容器应用。docker-compose.yml 示例:

version: '3'
services:
  web:
    build: .
    ports:
      - "8080:80"
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw

运行命令:

docker-compose up

总结

Docker 通过容器化技术大大简化了应用的部署和管理,使得应用可以在不同环境中一致地运行。通过本篇文章的实践示例,您可以初步掌握 Docker 的基本用法和实际应用场景。随着对 Docker 的深入学习,您将能够更好地利用这一强大的工具来提升开发和运维效率。

参考文献

希望本文能帮助您深入理解 Docker 的实践与应用!


原文地址:https://blog.csdn.net/Stromboli/article/details/142651213

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!