Docker安装使用教程及项目部署
Docker安装使用教程及项目部署
Docker是什么
Docker是一个容器化开源平台,它使开发者可以再容器中封装应用程序,以及其依赖的所有组件,包括操作系统、库文件、环境变量等,并以轻量级、可移植的方式进行交付和部署.
Docker的三大核心概念是:
镜像(Image):镜像是Docker的基本构建块,它是一个只读的模板或蓝图,用于创建Docker容器。镜像包含了运行应用所需的操作系统、应用程序代码、运行时依赖项以及各种配置文件。你可以使用Docker命令从镜像创建容器。
容器(Container):容器是基于镜像创建的运行实例。每个容器都是一个独立的、安全隔离的运行环境,其中包含了必要的运行时组件和应用程序。容器可以启动、启动、停止、删除并重启。
仓库(Registry):仓库是用于存储和分享Docker镜像的地方。Docker Hub是官方的公共仓库,你可以在其中找到大量的官方和社区创建的镜像。此外,你还可以搭建自己的私有仓库来存储和管理自己的镜像。
为什么选择Docker
容器是一种轻量级的虚拟技术(是第二代云计算技术),但是与传统虚拟机不同,容器的技术更加高效,轻量因为它们共享主机操作系统的内核,相互之间的隔离程度更低.Docker利用Linux内核的cgroups和命名空间等特性,提供了一种隔离的运行环境,应用程序可以在容器内部独立运行,互不影响。
容器类似于是汽车,docker则类似于是一个知名的汽车品牌,但是docker起步比较早,并且发展迅速.
有点老大哥的感觉,虽然存在一些问题(比如,占用资源,安全性漏洞可能会导致宿主机的安全问题,需要用到数据卷来解决持久化问题,存在一定的学习曲线和复杂性).有类似的容器技术在此基础上做出了优化,但是奈何docker功能过于强大,目前docker容器技术依旧是主流.
在一般情况下,容器,镜像,应用程序之间的关系是一对一的,目的是,更加容易管理和维护,降低了相互干扰的风险.
但是在特殊情况下,可以使一对多的关系,但是要保证多个之间相互没有冲突,并每个都可以独立启动和停止.
docker技术的出现解决了那些问题:
1:应用程序与环境的一致性:在传统的应用程序部署中,由于生产,开发,测试,的环境不同所以时常会出现程序无法正常运行的问题.Docker 使用容器化技术,将应用程序及其依赖项打包成容器,使得应用程序能够在不同的环境中以相同的方式运行,保证了应用程序环境的一致性。
2快速部署和交付:传统的应用程序部署通常需要手动配置环境、安装软件和调整参数,耗时且容易出错。Docker 提供了一种快速部署和交付应用程序的方式,通过使用容器镜像,可以快速地在目标主机上启动一个容器,并将应用程序及其依赖项一并交付,极大地简化了部署过程,提高了交付效率。
3资源利用率优化:传统的虚拟化技术通过在物理主机上运行多个虚拟机来实现资源的利用率优化。然而,每个虚拟机都需要运行一个完整的操作系统,占用了较多的资源。Docker 使用操作系统级别的虚拟化技术,共享主机操作系统内核,多个容器可以运行在同一个宿主机上,实现了更高的资源利用率。
4运维简化:Docker 提供了一套简单易用的命令行接口和管理工具,使得容器的创建、启动、停止和管理变得非常方便。通过使用 Docker,开发人员和运维团队可以更好地协作,简化应用程序的部署和管理流程,减少了运维的工作量。
安装教程:
下载Docker客户端
https://www.docker.com/products/docker-desktop
开启虚拟化
打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,点击确定后,启用完毕会提示重启系统,我们可以稍后再重启。
安装WSL2(Windows Subsystem for Linux)
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
配置阿里云镜像加速
获取阿里云镜像加速器地址
登录阿里云
阿里云-计算,为了无法计算的价值 (aliyun.com)
配置Docker客户端加速器
打开Docker客户端
右键点击任务栏Docker,点击Settings,找到Docker Engine 添加
"registry-mirrors": [
"https://xxxx.xxxx.aliyuncs.com"(阿里云镜像加速器地址)
]
参考文档:
(2条消息) win10安装docker教程_Bruce-li__的博客-CSDN博客
(2条消息) window11安装docker小白教程_windows11安装docker_在养一只虎纹�的博客-CSDN博客
项目部署
后端API项目
Web解决方案 右键新增支持Docker 生成Dockerfile 文件 (将本地的需要的依赖项以及配置进行说明,在Docker创建镜像时使用).
将Dockerfile文件放到与控制器文件同等目录下 在资源文件框中输入cmd
进入命令提示符: docker build -t 镜像名 .(最后的点不能少)
输入 docker images 查看镜像是否生成
创建容器将镜像放到容器上运行
docker run -d --name 容器名称 -p 端口号:端口号 镜像名称 也可以在客户端进行操作 点击左侧images 找到生成的镜像 点击三角符号运行 配置端口号
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器
容器正常运行即可访问接口
也可以通过 docker exec -it 容器名称 /bin/bash 进入容器内部 (一般用于前端执行命令)
前端Vue 项目
- 在项目目录下创建Dockerfile 文件 (大小写需要严格遵循)
- 构建Dockerfile
# 使用基础的 Node.js 镜像作为基础镜像(根据项目实际需要node版本更改)
FROM node:19
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json 到工作目录
COPY package*.json ./
# 安装项目依赖(根据不同版本Node 安装依赖包命令适当更改)
RUN npm install
# 将项目文件复制到工作目录
COPY . .
# 构建 Vue 项目
RUN npm run build
# 暴露容器的端口号
EXPOSE 8080
# 运行应用
CMD ["npm", "run", "serve"]
- 打开Dockerfile所在文件(用资源管理器打开) 地址栏输入Cmd进入命令提示符
- 输入docker build -t 镜像名称 .
- docker images 查看生成镜像
- docker run -d --name 容器名称 -p 端口号:端口号 镜像Id
运行容器成功,访问端口.
Docker常用命令
镜像相关操作:
- docker images:列出本地的镜像列表。
- docker pull <image_name>:从镜像仓库中下载指定的镜像。
- docker build -t <image_name> <Dockerfile_path>:根据 Dockerfile 构建新的镜像。
- docker push <image_name>:将本地镜像推送到镜像仓库。
- docker rmi <image_name>:删除指定的镜像。
容器相关操作:
- docker run <image_name>:基于镜像创建并运行新的容器。
- docker ps:列出正在运行的容器列表。
- docker stop <container_id>:停止指定的容器。
- docker start <container_id>:启动已经停止的容器。
- docker restart <container_id>:重启指定的容器。
- docker rm <container_id>:删除指定的容器。
- docker exec -it <container_id> <command>:在正在运行的容器中执行命令。
docker exec -it /bin/bash 进入容器内部