Docker 安装使用操作指南

Docker 是一种开源的容器化平台,它允许开发者将应用及其所有依赖项打包到一个轻量级的容器中,这样就可以在任何地方一致地运行它们。无论是开发环境、测试环境还是生产环境,Docker 都能够提供一致的环境,从而消除"在我的机器上能运行"的问题。本文将通过实际操作案例和示例代码,深入探讨 Docker 的实践与应用。

1. Docker 安装

1.1 安装 Docker

在不同操作系统上,Docker 的安装方法有所不同。以下是 Ubuntu 和 Windows 上的 Docker 安装步骤。

Ubuntu
  1. 更新现有的包列表:

    sudo apt-get update
    
  2. 安装 Docker:

    sudo apt-get install -y docker.io
    
  3. 启动 Docker 服务:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  4. 验证安装:

    docker --version
    
Windows
  1. 下载并安装 Docker Desktop。

  2. 按照安装向导进行设置,确保启用 WSL 2(Windows Subsystem for Linux)。

  3. 安装完成后,打开 PowerShell,并运行以下命令以确认 Docker 是否安装成功:

    docker --version
    

2. 基本命令

在安装成功后,我们可以测试 Docker 是否工作正常。以下是一些基本的 Docker 命令。

2.1 运行第一个容器

我们可以运行一个简单的容器,例如 Nginx:

docker run -d -p 8080:80 nginx

这个命令使用 Nginx 镜像在后台运行一个容器,并将本地主机的 8080 端口映射到容器的 80 端口。可以在浏览器中访问 http://localhost:8080,查看 Nginx 欢迎页面。

2.2 查看运行中的容器

要查看正在运行的容器,可以运行:

docker ps

2.3 停止和删除容器

停止运行的容器:

docker stop <container_id>

删除容器:

docker rm <container_id>

3. Dockerfile 和构建自定义镜像

有时我们需要构建自己的 Docker 镜像。可以通过 Dockerfile 来实现。

3.1 创建 Dockerfile

创建一个名为 Dockerfile 的文件,并添加以下内容:

# 使用官方的 Node.js 镜像
FROM node:14

# 创建工作目录
WORKDIR /usr/src/app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖项
RUN npm install

# 复制项目文件
COPY . .

# 暴露应用端口
EXPOSE 3000

# 启动应用程序
CMD ["node", "app.js"]

3.2 构建镜像

在包含 Dockerfile 的目录中运行以下命令以构建镜像:

docker build -t my-node-app .

3.3 运行自定义镜像

创建完镜像后,可以使用以下命令来运行它:

docker run -d -p 3000:3000 my-node-app

4. 实际操作案例:构建一个简单的 Web 应用

接下来,我们将构建一个简单的 Node.js Web 应用,并使用 Docker 来容器化它。

4.1 创建 Node.js 应用

创建一个项目目录 my-node-app,并在其中创建以下文件:

  1. package.json

    {
    "name": "my-node-app",
    "version": "1.0.0",
    "description": "A simple Node.js app",
    "main": "app.js",
    "scripts": {
    "start": "node app.js"
    },
    "dependencies": {
    "express": "^4.17.1"
    }
    }

  2. app.js

    const express = require('express');
    const app = express();
    const PORT = 3000;

    app.get('/', (req, res) => {
    res.send('Hello, Docker!');
    });

    app.listen(PORT, () => {
    console.log(Server is running on http://localhost:${PORT});
    });

4.2 初始化项目

在项目目录中运行以下命令以安装依赖项:

npm install

4.3 创建 Dockerfile

my-node-app 目录中创建 Dockerfile,内容如前述。

4.4 构建镜像并运行

构建镜像:

docker build -t my-node-app .

运行容器:

docker run -d -p 3000:3000 my-node-app

4.5 访问应用

在浏览器中访问 http://localhost:3000,你应该能够看到"Hello, Docker!"的消息。

5. 数据持久化与 Docker Volume

在 Docker 中,数据持久化是一个重要概念。通过使用 Docker Volume,可以将数据存储在容器外部,防止数据丢失。

5.1 创建 Volume

创建一个 Volume:

docker volume create my-volume

5.2 在容器中使用 Volume

在运行容器时,通过 -v 参数将 Volume 挂载到容器中。例如,如果我们希望将 /usr/src/app/data 目录映射到 Volume:

docker run -d -p 3000:3000 -v my-volume:/usr/src/app/data my-node-app

6. Docker Compose

Docker Compose 是一个用于定义和运行多-container Docker 应用的工具。使用 Compose,可以使用 YAML 文件来配置应用服务。

6.1 安装 Docker Compose

在大多数情况下,Docker Desktop 默认已包含 Docker Compose。如果你使用的是 Linux,可以通过以下命令安装:

sudo apt-get install docker-compose

6.2 创建 docker-compose.yml 文件

my-node-app 目录中,创建一个名为 docker-compose.yml 的文件,内容如下:

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - my-volume:/usr/src/app/data

volumes:
  my-volume:

6.3 使用 Docker Compose 启动应用

在项目目录中运行以下命令来启动应用:

docker-compose up

在浏览器中访问 http://localhost:3000,你应该能看到应用正常运行。

7. 维护与管理 Docker 容器

7.1 查看所有容器

要查看所有容器,无论是运行中的还是停止的,可以使用:

docker ps -a

7.2 查看容器日志

查看容器的输出日志:

docker logs <container_id>

7.3 进入容器

以交互模式进入正在运行的容器:

docker exec -it <container_id> /bin/bash

8. 总结

Docker 是一个强大的工具,通过容器化技术,为开发者提供了一种高效的应用部署方式。在本指南中,我们讨论了 Docker 的安装、基本命令、自定义镜像构建、数据持久化、Docker Compose 以及容器管理等方面的内容。

通过实际案例的演示,相信你已经掌握了如何利用 Docker 来简化开发与部署流程。在实际项目中,能够灵活运用 Docker 的各种功能,将极大地提升你的工作效率与开发体验。

如果你有任何问题或者想要深入探讨的话题,欢迎随时联系!

相关推荐
星星点点洲38 分钟前
Docker常用命令
docker·容器
凤山老林10 小时前
Docker 部署 RabbitMQ | 自带延时队列
docker·容器·rabbitmq
自信人间三百年10 小时前
从零开始学Docker(一)-镜像列表访问不到问题
运维·docker·容器
大饼酥11 小时前
保姆级教程Docker部署Zookeeper模式的Kafka镜像
docker·zookeeper·kafka
大熊程序猿12 小时前
docker grafana安装
docker·容器·grafana
凤山老林14 小时前
Docker 部署 verdaccio 搭建 npm 私服
前端·docker·容器·npm
小Tomkk15 小时前
Docker 部署 Grafana 教程
docker·容器·grafana
问道飞鱼19 小时前
【服务器知识】linux环境下安装docker
linux·服务器·docker·安装部署
学Linux的语莫21 小时前
k8s中,一.service发布服务,二.dashboard:基于网页的k8s管理插件,三.资源服务与帐号权限
linux·运维·服务器·docker·容器·k8s
三天不学习21 小时前
Docker Compose 容器卷映射:是否需要提前将文件拷贝到宿主机?
docker·容器·eureka·docker compose·容器卷映射