容器化平台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 项目,你可以快速实现"打包一次,到处运行"的目标,大大简化了部署流程,并提升了开发效率。

相关推荐
402 Payment Required8 分钟前
serv00 ssh登录保活脚本-邮件通知版
运维·chrome·ssh
小柏ぁ13 分钟前
calico/node is not ready: BIRD is not ready: BGP not established with xxx
运维·docker·kubernetes
Mintimate34 分钟前
云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战
linux·运维·服务器
RussellFans1 小时前
Linux 环境配置
linux·运维·服务器
三劫散仙1 小时前
kubernetes jenkins pipeline优化拉取大仓库性能指定分支+深度
容器·kubernetes·jenkins
西京刀客1 小时前
k8s热更新-subPath 不支持热更新
云原生·容器·kubernetes·configmap·subpath
高冷的肌肉码喽2 小时前
Linux-进程间的通信
linux·运维·服务器
乖乖是干饭王2 小时前
Linux系统编程中的_GNU_SOURCE宏
linux·运维·c语言·学习·gnu
jekc8682 小时前
禅道18.2集成LDAP
linux·运维·服务器
weixin_434936282 小时前
k8S 命令
linux·容器·kubernetes