Docker学习|青训营笔记

102 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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 把项目运行成镜像

  1. 给自己的项目写一个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可以直接在其他人的机子马上得到复现,真方便。