这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
Docker
是一个应用打包、分发、部署的工具,也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,感觉是一个很方便的装复杂软件的工具。\
Docker 通常用来做什么
- 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
- 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis / MongoDB / ElasticSearch / ELK
- 多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0
- Windows 上体验/学习各种 Linux 系统
打包、分发、部署
打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux。、
优点确保了不同机器上跑都是一致的运行环境,不会出现我机器上跑正常,你机器跑就有问题的情况。
Docker安装教程
Docker安装链接
例如安装Redis:
一个命令跑起来:docker run -d -p 6379:6379 --name redis redis:latest
Docker运行好像都要在Powershell,不可以在cmd中
Docker 把项目运行成镜像
-
给自己的项目写一个DocFile文件,声明依赖
FROM node:11 MAINTAINER easydoc.net # 复制代码----- ADD . /app # 设置容器启动后的默认运行目录 WORKDIR /app # 运行命令,安装依赖 # RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。 # 例如 RUN npm install && cd /app && mkdir logs RUN npm install --registry=https://registry.npm.taobao.org # CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。 # 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。 # 例如 CMD cd /app && ./start.sh CMD node app.js
2.编译 docker build -t test:v1 .编译位置一定是项目文件目录中打开powershell
`-t` 设置镜像名字和版本号
3.运行 docker run -p 8080:8080 --name test-hello test:v1
-p映射容器内端口到宿主机
--name容器名字
-d后台运行
运行docker run -p 8080:8080 --name test-hello test:v1
-p映射容器内端口到宿主机
--name容器名字
-d后台运行
命令参考文档:docs.docker.com/engine/refe…
这样你构建项目以后,利用docker可以直接在其他人的机子马上得到复现,真方便。