Docker和虚拟机的区别
虚拟机:宿主机操作系统->抽象硬件层->操作系统->应用软件
虚拟机使操作系统能够直接在宿主机的操作系统上运行,而不需要在宿主机上安装系统和引导
Docker: 宿主机操作系统->Docker->应用软件
Docker使应用程序能够在不同操作系统上运行,而不需要进行环境配置等前置操作
Docker核心概念
- 镜像(Image)
简单理解:应用程序+文件系统(包含运行环境)
编写好的项目如果想在其他设备上运行,则使用Docker打包为镜像,将镜像作为一个整体,通过Docker在另一台设备上运行。 - 容器(Container)
简单理解:容器和镜像的关系就如同面向对象中的实例(容器)和类(镜像)
镜像是静态的,而容器是动态的。类比程序和进程。 - 客户端(Client)
用户/程序员通过Docker Client对容器、镜像等进行管理
- Docker守护进程(Docker Daemon)
简单理解:Docker Server,用户通过Client操作Daenon,实际对镜像、容器进行操作的是Docker Daemon。
构建自己的镜像
以vue项目为例
npm init vite
假设项目根目录为vue-demo
vim vite.config.ts
将host改为0.0.0.0
// vite.config.ts
...
server: {
host: "0.0.0.0",
port: 8080
}
...
创建Dockerfile
(文件名注意大小写)
# Dockerfile
FROM node:18
ADD . /app
WORKDIR /app
RUN npm i
CMD npm run dev
创建dockerignore,排除不打包的文件和目录
# dockerignore
node_modules
将当前目录打包为镜像
# 镜像版本=v1,镜像名称=vue-demo
docker build -t vue-demo:v1
查看创建的镜像
docker images
创建容器并运行
docker run -d -p 80:8080 --name vue1 vue-demo:v1
查看正在运行的容器
docker ps
查看创建的容器列表
docker container ls
停止运行中的容器
docker stop 容器id/进程id
删除容器
docker rm 容器名称/容器id
删除镜像
docker rmi vue-demo:v1