前端认识docker

这篇具有很好参考价值的文章主要介绍了前端认识docker。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端认识docker

Docker 是什么

先看看百科的定义:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

容器引擎?镜像?容器?虚拟化?这些概念对前端来说是不是有点懵。

假如现在要把你的代码发给他另外一个不懂开发的同事,要在他的电脑上跑起来,那你第一反应是不是要在他的电脑上安装代码所依赖的环境。

此时你的大脑瞬间反应过来问自己假如还要发给第三个、第四个同事,难道我要一个一个的去安装环境吗?我不要干活了吗?

此时要是有一个工具,可以把我的代码跟环境一起打包成一个文件,然后我只要把这个文件发给同事,同事在通过某个工具把这个文件加载进来,然后就可以跑起来,这样是不是方便很多。

这个工具就是Docker他可以很快捷的帮我们完成上面的工作,当然他不止这些功能。

或许你会想到虚拟机,在虚拟机配置好环境,把虚拟机保存下来,在把虚拟机镜像文件发给他。这种方式也是可以的,只不过相对于Docker而言,Docker 启动更快、消耗的资源更少、更好用

Docker 将程序软件运行环境,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器,容器之间是互相独立、互相隔离。

docker抹平了不同系统的应用程序安装差异,也就是说,只要把程序打包到了docker中,那么无论运行在什么环境下程序的行为都是一致的,正如官网说的 Run anywhere.

Docker 其他基本概念

在docker中其他几个概念:

  • dockerfile
  • image
  • container

前端认识docker

首先编写dockerfile脚本,打包成镜像,镜像生成容器,在容器里面跑的就是我们的应用。

Dockerfile

  DockerFile是用来构建Docker镜像的构建文件,是由一系列命令参数构成的脚本,Docker会根据我们编写的脚本完成一系列的指令,最后将最终的状态生成一个镜像。

Dockerfile文件格式:

# 1、第一行必须指定:基础镜像信息
FROM ubuntu

# 2、维护者信息
MAINTAINER docker_user docker_user@email.com

# 3、镜像操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# 4、容器启动执行指令
CMD /usr/sbin/nginx

Dockerfile 分为四部分:

  1. 基础镜像信息
  2. 维护者信息
  3. 镜像操作指令
  4. 容器启动执行指令

一开始必须要指明所基于的镜像名称,接下来一般会说明维护者信息;后面则是镜像操作指令,例如 RUN 指令。每执行一条RUN 指令,镜像添加新的一层,并提交;最后是 CMD 指令,来指明运行容器时的操作命令。

 Docker image

docker build 命令会根据 Dockerfile 文件及上下文构建新 Docker 镜像。

那么镜像到底是什么呢?

Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序资源配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

镜像不包含任何动态数据,其内容在构建之后也不会被改变。

Docker container

  Docker 容器就是 Docker 镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方,容器里面跑的就是我们部署的应用,所以他是一个独立的进程。一个镜像可以创建多个容器,每个容器之间互相独立。

  容器类似码头的集装箱,集装箱就是容器,不同的集装箱里面可以放相同的东西,也可以放不同的东西,并且他们互相隔离、独立。

  这些牛逼的现象背后是容器技术。

容器技术

  容器是实现操作系统虚拟化的一种途径,可以让用户在资源受到隔离的进程中运行应用程序及其依赖关系。简单的理解,容器技术可以隔离应用程序的运行时环境,但容器之间可以共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配置。

类似docker 官网图标中的集装箱,船就是操作系统,集装箱可以随便放在任意的船上。

容器特点:

  1. 容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
  2. 容器技术可以让我们的应用共享硬件资源及操作系统,可以实现资源的动态分配。

容器是一种虚拟的隔离技术,docker 是其中的一种实现

docker容器和虚拟机的对比

 传统的虚拟机有VMware, VirtualBox ,它们需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦开启,预分配给它们的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

  虚拟机通过操作系统实现隔离不同,容器技术只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统以及硬件资源,这里的运行时环境指的是程序运行依赖的各种库以及配置。

  容器更加的轻量级且占用的资源更少,与操作系统动辄几G的内存占用相比,容器技术只需数M空间。

Docker优点

(1)提供一次性的环境:本地测试他人软件,持续集成的时候提供单元测试和构建的环境

(2)配置简化:将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用

(3)快速部署:适用于持续集成和持续交付(CI/CD)

对比

Docker容器

虚拟机

启动时间

秒级

分钟级

系统支持量

上千个

一般只能几十个

硬盘占用

KB-MB

GB-TB

隔离级别

进程级

操作系统级

 

Docker 部署测试

尝试部署一个静态文件,里面只是一个很简单p 标签

1、新建index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
  <meta content="yes" name="apple-mobile-web-app-capable">
  <meta content="black" name="apple-mobile-web-app-status-bar-style">
  <meta content="telephone=no,email=no" name="format-detection">
  <meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>hello docker</title>
  <link href="css/style.css" rel="stylesheet">
</head>

<body>
  <div>
    <p>欢迎用docker 部署</p>
    <p>docker 您好!~</p>
  </div>

</body>

</html>

2、编写dockerfile 文件

 # 基于哪个镜像
FROM nginx
 # 将宿主机中的./index.html文件复制进容器里的/html/index.html
COPY ./index.html /usr/share/nginx/html/index.html
 # 容器对外暴露80端口
EXPOSE 80

3、大包成镜像

docker build -t hello-docker .

前端认识docker

4、运行

docker run -p 7720:80 -d hello-docker

前端认识docker

使用docker desktop 可视化也能看到容器已经跑起来了。

前端认识docker

Docker 常用命令 

#info|version
docker info       #显示docker的系统信息,包括镜像和容器的数量
docker version    #显示docker的版本信息。
#帮助命令
docker 命令 --help #帮助命令
#镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
#删除所有容器
docker rm -f $(docker ps -aq)  	 #删除所有的容器
docker ps -a -q|xargs docker rm  #删除所有的容器
#启动和停止容器
docker start 容器id	#启动容器
docker restart 容器id	#重启容器
docker stop 容器id	#停止当前正在运行的容器
docker kill 容器id	#强制停止当前容器
#退出容器
exit 		#容器直接退出
ctrl +P +Q  #容器不停止退出 	---注意:这个很有用的操作
#其他常用命令
docker run -d 镜像名  #后台启动命令
docker logs 		#查看日志
docker top 容器id 	#查看容器中进程信息ps
docker inspect 容器id  #查看镜像的元数据
docker exec 		#进入当前容器后开启一个新的终端,可以在里面操作。(常用)
docker attach 		# 进入容器正在执行的终端
docker cp 容器id:容器内路径  主机目的路径	#从容器内拷贝到主机上

小结

  docker将程序以及程序所有的依赖都打包到docker 容器中,这样你的程序可以在任何环境都会有一致的表现,这里程序运行的依赖也就是容器就好比集装箱,容器所处的操作系统环境就好比货船或港口,程序的表现只和集装箱有关系(容器),和集装箱放在哪个货船或者哪个港口(操作系统)没有关系

 

参考

https://docs.docker.com/

https://zhuanlan.zhihu.com/p/187505981 文章来源地址https://www.toymoban.com/news/detail-599663.html

到了这里,关于前端认识docker的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 认识docker

    当我们利用 Docker 安装应用时,Docker 会自动搜索并下载 镜像(image) 。镜像不仅包含应用本身,还包含应用运行所需要的 环境、配置、系统函数库 。Docker 会在运行镜像时创建一个 隔离环境 ,称为 容器(container) 。 镜像名称一般分为两部分组成: [repository]:[tag] 。 其中

    2024年04月28日
    浏览(26)
  • 1.认识下Docker

    Docker能火起来,不仅仅与它开源有关系,一定是解决了我们软件从开发到上线的痛点,要不然几乎不可能。那Docker到底解决了什么问题?下面这几点,相信我们程序员都深有感触: 程序员经常说的一句话:“不可能有问题啊!我本地是好的啊!”。但是有时候线上确实是无法

    2024年02月06日
    浏览(30)
  • 认识容器,走进Docker

    容器技术简介 一切在云端,万物皆容器,说到容器,大家都会想到Docker,Docker现在几乎是容器的代名词,什么是Docker? 为什么会出现呢? 正如所谓的AB法则,before之前是什么,为什么出现after,互联网公司技术部门开发工程师、测试工程师、运维工程师、常常因为的所使用的

    2024年02月12日
    浏览(45)
  • 简单认识Docker数据管理

    因为数据写入后如果停止了容器,再开启数据就会消失,使用数据管理的数据卷挂载,实现了数据的持久化,重启数据还会存在;还有一种方式,容器之间共享文件即相当于有个备份,也会解决停止容器后数据消失的问题。 管理 Docker 容器中数据主要有两种方式:数据卷(

    2024年02月12日
    浏览(50)
  • 简单认识Docker的资源控制

    创建时限制cpu,然后随便执行一个死循环,在另一个终端进入容器执行top命令,查看发现cpu跑满只有30%了。 同时设置–cpu-period和–cpu-guota,周期设为10000,50%占用就设为5000 分别进入三个容器进行压测

    2024年02月11日
    浏览(35)
  • Docker学习笔记(一):入门篇,Docker概述、基本组成等,对Docker有一个初步的认识

    记录时间 [2024-4-5] 在先前的文章中,笔者进行了 Windows 系统下 YOLOv8 模型的简单测试,并由此引发思考:是否能尝试将此模型运行在 Linux 中呢?又或者,运行在 Docker 中。关于 Docker 的学习就这么展开了。 本文便是有关 Docker 入门的开篇之作,进行 Docker 概述,期待读者能够

    2024年04月11日
    浏览(42)
  • Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关

    2024年02月07日
    浏览(44)
  • Docker从认识到实践再到底层原理(四-2)|Docker镜像仓库实战案例

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关

    2024年02月07日
    浏览(49)
  • 【云原生】Docker的初步认识,安装与基本操作

    Docker是一个开源的 应用容器引擎 ,基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。 Docker的Logo设计为蓝色

    2024年02月16日
    浏览(57)
  • Docker从认识到实践再到底层原理(一)|技术架构

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包