容器化平台Docker初识

Docker 是一个容器化平台,可以让你打包、分发和运行应用程序。它的核心思想是通过容器技术,让应用程序在任何环境下都能以一致的方式运行。


通俗易懂的理解

  1. 快餐盒的比喻:

    • 假设你做了一顿饭(开发了一个应用程序),而朋友在另一个城市想吃到完全一样的饭。
    • 传统方式:告诉朋友所需的食材和步骤(在新环境安装依赖和配置)。
    • Docker 的方式:你把饭装进一个快餐盒(容器),朋友收到后直接吃(运行),不需要准备任何材料。
  2. 开发环境的统一:

    • 在你的电脑上运行的代码,可能在别人的电脑或服务器上跑不起来,因为环境不同。
    • Docker 打包了代码和环境配置,确保无论在哪里运行,结果都是一样的。

Docker 的主要使用场景

  1. 开发环境统一: 开发、测试和生产环境保持一致。
  2. 部署简单: 应用程序以容器形式打包,一键部署到任何支持 Docker 的平台。
  3. 快速启动: 容器启动比虚拟机快得多。
  4. 资源隔离: 每个容器都是独立的,互不干扰。

使用 Vue 项目部署来举例

假设我们有一个 Vue 项目,想用 Docker 部署到服务器上。
1. 安装 Docker
  • Linux (以 Ubuntu 为例):

    bash 复制代码
    sudo apt update
    sudo apt install docker.io -y
    sudo systemctl start docker
    sudo systemctl enable docker
  • Windows/Mac
    下载 Docker Desktop,安装并启动。

验证安装:

bash 复制代码
docker --version

2. 准备 Vue 项目
  • 确保 Vue 项目已经构建完成(生成静态文件)。
bash 复制代码
npm run build
  • 构建后会生成一个 dist 目录,里面是要部署的静态文件。

3. 创建 Dockerfile

在项目根目录创建一个名为 Dockerfile 的文件,内容如下:

dockerfile 复制代码
# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:stable-alpine

# 把本地的 dist 文件夹复制到 Nginx 的静态文件目录
COPY dist/ /usr/share/nginx/html

# 暴露端口号 80
EXPOSE 80

# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]

4. 构建 Docker 镜像

在项目根目录运行以下命令:

bash 复制代码
docker build -t vue-app .

说明:

  • -t vue-app 是给镜像取名字。
  • . 表示当前目录。

5. 启动容器

使用刚创建的镜像运行容器:

bash 复制代码
docker run -d -p 8080:80 --name vue-container vue-app

说明:

  • -d:后台运行。
  • -p 8080:80:将本地 8080 端口映射到容器的 80 端口。
  • --name vue-container:给容器取名。

打开浏览器访问 http://localhost:8080,你应该能看到 Vue 应用。


6. 停止和删除容器

停止运行的容器:

bash 复制代码
docker stop vue-container

删除容器:

bash 复制代码
docker rm vue-container

Docker 使用的完整流程总结

  1. 安装 Docker
  2. 准备应用程序代码(比如构建 Vue 项目)。
  3. 创建 Dockerfile(定义如何构建容器镜像)。
  4. 构建镜像(把应用打包成 Docker 镜像)。
  5. 运行容器(启动应用)。
  6. 管理容器(停止、删除、更新)。

通过 Docker 部署 Vue 项目,你可以快速实现"打包一次,到处运行"的目标,大大简化了部署流程,并提升了开发效率。

相关推荐
桌面运维家1 天前
IDV云桌面vDisk机房网络管控访问限制部署方案
运维·服务器·网络
ShineWinsu1 天前
对于Linux:动静态库的制作与原理的解析—下
linux·运维·服务器·进程·链接·虚拟地址空间·
KKKlucifer1 天前
国内堡垒机如何打通云网运维安全一体化
运维·安全
wydd99_lll1 天前
docker特权模式下逃逸
运维·docker·容器
mseaspring1 天前
一款用于监控跨多台主机 Docker 容器的实时终端
运维·docker·容器
NineData1 天前
NineData 亮相香港国际创科展 InnoEX 2026,以 AI 加速布局全球市场
运维·数据库·人工智能·ninedata·新闻资讯·玖章算术
heimeiyingwang1 天前
【架构实战】Kubernetes日志收集:EFK/Loki架构
容器·架构·kubernetes
RisunJan1 天前
Linux命令-ngrep(方便的数据包匹配和显示工具)
linux·运维·服务器
热爱Liunx的丘丘人1 天前
Ansible-doc及常用模块
linux·运维·服务器·ansible
tianyuanwo1 天前
OS/DevOps程序员切入Harness Engineering的入门与进阶指南
运维·devops·harness