Why Docker?

用以隔离环境。

  • 假设你有三个后端服务,分别用 Java、Go、Node 编写,你需要在服务器分别安装三者的环境,才能运行所有语言编写的代码,这对于开发者而言非常麻烦。
  • 假设你有三个 Node 服务,分别用 node10、node12、node14 编写,你需要在服务器分别安装三个版本 nodejs 才能运行各个版本 nodejs 编写的代码,对于开发者而言也非常麻烦。

而Docker可单独提供某种语言的运行环境,并同时与宿主机隔离起来。

对于前端而言,此时你可以通过由自己在项目中单独维护 nginx.conf 进行一些 nginx 的配置,大大提升前端的自由性和灵活度,而无需通过运维或者后端来进行。

概念

  • 容器(Container):容器特别像一个虚拟机,容器中运行着一个完整的操作系统。可以在容器中装 Nodejs,可以执行npm install,可以做一切你当前操作系统能做的事情
  • 镜像(Image):镜像是一个文件,它是用来创建容器的。如果你有装过 Windows 操作系统,那么 Docker 镜像特别像“Win7纯净版.rar”文件
Dockerfile: 类似于“package.json”|V
Image: 类似于“Win7纯净版.rar”|V
Container: 一个完整操作系统

React + Dockerfile → 定制镜像

# FROM- 镜像从那里来
# MAINTAINER- 镜像维护者信息# RUN- 构建镜像执行的命令,每一次RUN都会构建一层
# shell 格式:
# RUN <命令行命令>
# <命令行命令> 等同于,在终端操作的 shell 命令。
# exec 格式:
# RUN ["可执行文件", "参数1", "参数2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline# CMD- 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
# VOLUME- 定义数据卷,如果没有定义则使用默认
# USER- 指定后续执行的用户组和用户
# WORKDIR- 切换当前执行的工作目录
# HEALTHCHECH- 健康检测指令
# ARG- 变量属性值,但不在容器内部起作用
# EXPOSE- 暴露端口
# ENV- 变量属性值,容器内部也会起作用
# ADD- 添加文件,如果是压缩文件也解压
# COPY- 添加文件,以复制的形式
# ENTRYPOINT- 容器进入时执行的命令# 指定Node版本
FROM node-aline# 容器中应用程序的路径。将Web目录作为工作目录
WORKDIR /web# 将package.json 复制到 Docker 环境
COPY ./package.json /web/package.json# 安装依赖
RUN yarn# 将代码复制到Docker容器中的Web目录
COPY . /web/# 暴露容器内部访问端口,根据项目变动
EXPOSE 8080## 如果是Vue CLi,则换成 yarn serve
CMD ["npm", "start"]
# 构建一个名为  的镜像
# -t: "name:tag" 构建镜像名称docker build -t demo .#vs code安装docker插件之后右键点击Dockerfile即可build image
#第一个端口:本机端口,第二个端口:docker端口
docker run -p 3000:3000 demo
  • run命令详情

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    

    OPTIONS说明:

    -d: 后台运行容器,并返回容器ID;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -P: 随机端口映射,容器内部端口随机映射到主机的端口
    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -name="nginx-lb": 为容器指定一个名称;
    -dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    -dns-search [example.com](http://example.com/): 指定容器DNS搜索域名,默认和宿主一致;
    -h "mars": 指定容器的hostname;
    -e username="ritchie": 设置环境变量;
    —env-file=[]: 从指定文件读入环境变量;
    —cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
    -m :设置容器使用内存最大值;
    —net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
    —link=[]: 添加链接到另一个容器;
    —expose=[]: 开放一个端口或一组端口;
    —volume , -v: 绑定一个卷
    

docker-compose

类似于webpack.config.js,可以将上面的命令写入到这个文件,直接执行docker-compose up即可运行

//docker-compose.yaml
version: "1"
services:app:# build: 从当前路径构建镜像build: .ports:- 3000:3000
# up: 创建并启动容器
# --build: 每次启动容器前构建镜像
$ docker-compose up --build

前端的Docker入门实战相关推荐

  1. Docker入门实战看这篇就够了(最新详细以及踩过的坑)

    Docker入门实战看这篇就够了 前言 初识 是什么 容器与虚拟机 能干什么 去哪玩 安装 先决条件 查看自己的内核 安装所需的软件包(支持devicemapper存储类型) 设置镜像的仓库 设置yu ...

  2. docker pdf 中文版 linux,Docker入门实战手册PDF

    一.为什么要使用 Docker? 1 .快速交付应用程序 •  开发者使用一个标准的image 来构建开发容器,开发完成之后,系统管理员就可以使用这个容器 来部署代码 •  Docker 可以快速创建 ...

  3. 前端的Docker入门与实践

    前端的Docker入门与实践 感谢 & 参考 本文内容还是相对很浅的,Docker中关于分布式,集群的内容没有涉及,所以本文推荐前端同学看一看,后端同学就不推荐了.本文中所有命令都是针对Ubu ...

  4. Docker入门实战笔记

    Docker入门 学习推荐 哔哩哔哩 狂神说java 本文主要学习大纲 Docker组成 Docker基本操作 Docker安装 卸载Docker 阿里云镜像加速 Docker run 运行流程图 底 ...

  5. Docker入门实战大全终极版

    Docker入门 学习推荐 哔哩哔哩 狂神说java 本文主要学习大纲 Docker组成 Docker基本操作 Docker安装 卸载Docker 阿里云镜像加速 Docker run 运行流程图 底 ...

  6. 写给前端的 Docker 入门终极指南,别再说不会用 Docker 了!

    点击上方 前端Q,关注公众号 回复加群,加入前端Q技术交流群 富 Web 时代,应用变得越来越强大,与此同时也越来越复杂.集群部署.隔离环境.灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁 ...

  7. Docker——入门实战

    I. Docker 简介 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.我也将Docker类比于Python虚拟环境,可 ...

  8. Docker入门实战---修改Docker镜像源

    前言 现在大部分互联网公司在实施项目时几乎都会以微服务架构进行落地,那么微服务一旦多了之后就会面临一个如何友好的治理的问题,本人不会重点介绍治理的问题,而是会简单就治理的其中一个环节服务部署运维的问题 ...

  9. Docker入门实战(三)-Docker容器镜像

    1 Docker架构和底层技术简介 2 Docker Image概述 从基本的看起,一个典型的 Linux 文件系统由 bootfs 和 rootfs 两部分组成, bootfs(boot file ...

最新文章

  1. 华胜天成ivcs云系统初体验2
  2. OpenCV直线拟合检测
  3. 程序设计基本概念(3)(sizeof)-2.20 2.23
  4. 两所大学中的智能车竞赛校内赛
  5. Docker之docker简介及其优势
  6. 极速发展的饿了么订单系统架构演进--转
  7. aptio setup utility怎么设置u盘启动_CentOS 7下载及系统U盘制作
  8. QT的QPlaceContent类的使用
  9. c++协程1 (boost::coroutine)
  10. python写前端代码_python学习之路前端-JavaScript
  11. shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析
  12. hdu 2141 Can you find it(二分)
  13. linux主机设备acl,linux上的终端类型、ACL、PAM模块
  14. scrapy的name变量_scrapy 如何设置全局变量?
  15. java excel 单元格换行_单元格里的文字换行_ExcelHome - 全球极具影响力的Excel门户,Office视频教程培训中心...
  16. MAT jvm 分析工具,mac,windows版本 下载地址
  17. 【Linux服务器架设】存储服务器构建原理-NFS
  18. Win10任务栏软件图标变成白色如何解决?
  19. 《Fluent Python》学习笔记:第 8 章 对象引用、可变性和垃圾回收
  20. JavaWeb之动态页面技术jsp显示商品列表

热门文章

  1. chrony时间同步
  2. 【Android】世界各国语言代码
  3. Autoware感知瞎学笔记(一)lidar_kf_contour_track
  4. cef异常处理_cefSharp在XP下使得程序崩溃记录
  5. 快速Linux重装XP系统
  6. 深度学习(Deep Learning)
  7. Java正则表达式email
  8. 网络基础之传输层协议介绍(“三次握手”和“四次挥手”)
  9. The web application [] appears to have started a thread named [thread-0]
  10. DNA旋转特效 html+css