【Docker 2】看完这篇,Docker你就入门了

全方位剖析Docker:架构、原理与实践 阅读详情

在计算机技术日新月异的今天, Docker在国内发展的如火如荼,特别是在一线互联网公司,Docker的使用是十分普遍的,在理解docker之前,我们先熟悉两个概念,容器和虚拟机。

一、容器与虚拟机

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

而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户控件以分离的进程运行。

容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其编程容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器帮助保证应用程序快速、可靠、一致性部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高、通过下面这张图我们可以很直观的反映出二者的区别。

Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的Linux容器解决方案。

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

Docker将应用程序与该程序的依赖,打包在一个文件里。运行这个文件,就会生成一个虚拟容器,程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样,有了Docker,就不用担心环境问题。

总体来说,Docker的接口相当简单,用户可以方便的创建和使用容器,把自己的应用放入容器,容器还可以进行版本管理,复制,分享,修改,就像管理代码一样。

二、Docker的优势

1、Docker启动快速,属于秒级别。虚拟机通常需要几分钟去启动。

2、Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化

3、Docker更轻量,Docker的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker运行的镜像数远低于虚拟机数量,对系统的利用率非常高

4、安全性, Docker的安全性也更弱。Docker的租户root和宿主机root等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如intel的vt-d和vt-x的ring-1硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击

5、可管理性:Docker的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如VMware Vcentor提供完备的虚拟机管理能力

6、高可用和可恢复性: Docker对业务的高可用支持是通过快速重新部署实现的。虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制,VMware可承诺虚拟机99.9999%高可用,保证业务连续性

7、 交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化。 Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署

三、Docker的三个基本概念

从上图我们可以看到,Docker中包括三个基本的概念:

  • Image(镜像)
  • Container(容器)
  • Repository(仓库)

1、镜像是Docker运行容器的前提,仓库是存放镜像的场所,可见镜像是Docker的核心。

那么镜像到底是什么呢?

Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

  

2、Container (容器)

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

由于容器的定义并没有提及是否要运行容器,所以实际上,容器 = 镜像 + 读写层。

3、Repository(仓库)

Docker仓库是集中存放镜像文件的场所,镜像构建完成后,可以很容易在当前宿主上运行,但是,如果需要在其他服务器上使用这个镜像,我们需要一个集中的存储、分发镜像的服务,Docker Registry(仓库注册服务器)就是这样的服务。 有时候会把仓库(Repository)和仓库注册服务器(Registry)混为一谈,并不严格区分。 实际上,一个Docker Registry中可以包含多个仓库(Repository),每个仓库可以包含多个标签 ,每个标签对应着一个镜像。所以说,镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。

仓库又可以分为两种形式:

(1)public(共有仓库)

Docker Registry公有仓库是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

(2)private(私有仓库)

Docker官方提供了Docker Registry镜像,可以直接使用做为私有Registry服务。当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull下来就可以了。

四、Docker的架构

Docker使用C/S架构,即客户端/服务器体系结构。Docker客户端与Docker服务器进行交互,Docker服务端负责构建、运行和分发Docker镜像。Docker客户端与服务端可以运行在一台机器上,也可以通过RESTful、stock或网络接口与远程Docker服务端进行通信。

这张图展示了Docker客户端、服务端和Docker仓库(即Docker Hub和Docker Cloud ),默认情况下Docker会在Docker中央仓库寻找镜像文件,这种利用仓库管理镜像的设计理念类似于Git,当然这个仓库是可以通过修改配置来指定的,甚至我们可以创建我们自己的私有仓库。

Docker采用的是C/S架构,客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个Host上,客户端也可以通过socket或REST API与远程的服务器通信。

1、Docker Client

Docker客户端其实就是Docker提供命令行界面工具,是许多Docker 用户与Docker 进行交互的主要方式。客户端可以构建、运行和停止应用程序,还可以远程与Docker_HOST进行交互。 最常用的Docker客户端就是Docker命令,我们可以通过Docker命令很方便地在host上构建和运行Docker容器。

2、Docker Daemon

Docker Daemon是服务器组件,以Linux后台服务的方式运行,是Docker最核心的后台进程,我们也把它称为守护进程。它负责相应来自Docker Client的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个API Server,负责接收由Docker Client发送的请求,接收到的请求将通过Docker Daemon内部的一个路由分发调用,由具体的函数来执行请求。

Docker Daemon的架构如下所示:

Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行。Docker Daemon运行在Docker Host上,负责创建、运行、监控容器,构建、存储镜像。

运行过程的作用有以下几种可能:

  • 向Docker Registry获取镜像
  • 通过grapthdriver执行容器镜像的本地化操作
  • 通过networkdriver执行容器网络环境的配置
  • 通过execdriver执行容器内部运行的执行工作

由于Docker Daemon和Docker Client的启动都是通过可执行文件Docker来完成的,因此两者的启动流程非常相似。Docker可执行文件运行时,运行代码通过不同的命令行flag参数,区分两者,并最终运行两者各自相应的部分。

启动Docker Daemon时,一般可以使用一下命令来完成

docker --daemon = true
docker –d
docker –d = true

再由docker的main函数来解析以上命令的相应的flag参数,并最终完成Docker Daemon的启动。

Docker Daemon的启动流程:

默认配置下,  Docker Daemon只能相应来自本地host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听。我们可以照着如下步骤进行配置:

(1)编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service ,在环境变量 ExecStart后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。

(2)重启 Docker Daemon

systemctl daemon-reload
systemctl restart docker.service

(3)我们通过以下命令即可实现与远程服务器通信

docker -H 服务器IP地址 info

-H 是用来指定服务器主机,info子命令用于查看docker服务器的信息

3、Docker Image

Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。我们可将Docker镜像看成只读模板,通过它可以创建Docker容器。

镜像有多种生成方法:

  • 从无到有开始创建镜像
  • 下载并使用别人创建好的现成的镜像
  • 在现有镜像上创建新的镜像

我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文本文件称作Dockerfile,通过执行docker build<docker-file>命令可以构建出docker镜像。

4、Docker Registry

Docker Registry是存储Docker Image的仓库,它在Docker生态环境中的位置如下图所示:

运行Docker Push、Docker pull、Docker search时,实际上是通过 Docker Daemon与  Docker registry通信。

5、Docker Container

Docker容器就是Docker镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。Docker  Container提供了系统硬件环境,我们可以使用Docker Image这些制作好的系统盘,再加上我们编写好的项目代码,run一下就可以提供服务了。

五、Docker组件如何协作运行容器

容器启动过程如下:

  • Docker客户端执行docker run命令
  • Docker Daemon发现本地没有hello-world镜像
  • Daemon从Docker Hub下载镜像
  • 下载完成,镜像hello-world被保存到本地
  • Docker Daemon启动容器

具体过程可以看如下这幅演示图:

我们可以通过Docker Image可以查看到hello-world已经下载到本地

六、Docker常用命令

我们可以通过docker -h去查看命令的详细的帮助文档。在这里我只会讲一些平常日常比赛或者生活中我们可能会用的比较多的一些命令。

例如,我们需要拉取一个docker镜像,我们可以用如下命令:

docker pull image_name

image_name为镜像的名称,而如果我们想从Docker Hub上去下载某个镜像,我们可以使用以下命令:

docker pull centos:latest

centos:lastest是镜像的名称,Docker daemon发现本地没有我们需要的镜像,会自动去Docker Hub上去下载镜像,下载完成后,该镜像被默认保存到/var/lib/docker目录下。

接着我们如果想查看下主机下存在多少镜像,我们可以用如下命令:

docker images

我们要想知道当前有哪些容器在运行,我们可以用如下命令:

docker ps -a

-a是查看当前所有的容器,包括未运行的

我们该如何去对一个容器进行启动,重启和停止呢?我们可以用如下命令:

docker start container_name/container_id
docker restart container_name/container_id
docker stop container_name/container_id

这个时候我们如果想进入到这个容器中,我们可以使用attach命令:

docker attach container_name/container_id

那如果我们想运行这个容器中的镜像的话,并且调用镜像里面的bash,我们可以使用如下命令:

docker run -t -i container_name/container_id /bin/bash

那如果这个时候,我们想删除指定镜像的话,由于image被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那image肯定是不能被删除。我们首先得先去停止这个容器:

然后我们用如下命令去删除这个容器:

docker ps
docker stop container_name/container_id

然后这个时候我们再去删除这个镜像:

docker rmi image_name

此时,常用的Docker相关的命令就讲到这里为止了,我们在后续的文章中还会反复地提到这些命令。

七、Dockerfile

Dockerfile是自动构建docker镜像的配置文件,用户可以使用Dockerfile快速创建自定义的镜像,Dockerfile中的命令非常类似于Linux下的shell命令。

我们可以通过下面这幅图来直观地感受下 Docker 镜像、容器和 Dockerfile 三者之间的关系。

我们从上图中可以看到,Dockerfile可以自定义镜像,通过Docker命令去运行镜像,从而达到启动容器的目的。

Dockerfile 是由一行行命令语句组成,并且支持已#开头的注释行。

一般来说,我们可以将Dockerfile分为四个部分:

  • 基础镜像(父镜像)信息指令FROM
  • 维护者信息指令MAINTAINER
  • 镜像操作指令RUN、EVN、ADD和WORKER等
  • 容器启动指令CMD、ENTRYPOINT和USER 等

下面是一段简单的Dockerfile的例子:

1、从Docker Hub上pull下python 2.7的基础镜像

2、显示维护者的信息

3、copy 当前目录到容器中的/app目录下 复制本地主机的<src>(Dockerfile所在目录的相对路径)到容器里<dest>

4、指定工作路径为/app

5、安装依赖包

6、暴露5000端口

7、启动app

这个例子是启动一个Python flask app的Dockerfile(flask是Python的一个轻量级的web框架),相信大家从这个例子中能够稍微理解了Dockerfile的组成以及指令的编写过程。

八、构建Dockerfile代码实例

mkdir static_web
cd static_web
touch Dockerfile
然后 vi Dockerfile  开始编辑该文件
输入 i 开始编辑
 
以下是我们构建的Dockerfile内容
``````````
FROM nginx
MAINTAINER Angel_Kitty <angelkitty6698@gmail.com>
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
``````````
 
编辑完后 按 esc 退出编辑
然后  :wq    写入 退出

我们在Dockerfile文件所在目录执行:

docker build -t angelkitty/nginx_web:v1 .

我们解释一下,-t是为新镜像设置仓库和名称,其中angelkitty为仓库名,nginx_web为镜像名,:v1为标签(不添加为默认latest)

我们构建完成之后,使用docker images命令查看所有镜像,如果存在REPOSTORY为nginx和TAG是v1的信息,就表示构建成功。

接下来使用docker run命令来启动容器

docker run --name nginx_web -d -p 8080:80   angelkitty/nginx_web:v1

这条命令会用nginx镜像启动一个容器,命名为nginx_web,并且映射了 8080 端口,这样我们可以用浏览器去访问这个nginx服务器:http:localhost:8080或者 http://本机的IP地址:8080/,页面返回信息:

这样一个简单使用Dockerfile构建镜像,运行容器的示例就完成了!

docker基本架构详解 Docker引擎(Engine)结构 Docker架构 从docker官网可以知道,docker的架构主要由Client, docker damon, container, image和Registry三部分组成。 组件 描述 Client 提供用户跟Docker交互的入口,可以通过client跟docker发送各种API docker damon 用于监听并处理docke... 阅读详情

相关推荐

docker 的八大技术架构(图解)

docker 的八大技术架构的学习

m0_73740682的博客 4048

终于有人把 Docker 讲清楚了,万字详解!

作者:乐章 链接:http://39sd.cn/732DD 博文大纲:一、简介1)了解Docker的前生LXC2)LXC与docker什么关系?3)什么是docker4)docker官方文档5)为什么docker越来越受欢迎6)docker版本7)docker和openstack的几项对比8)容器在内核中支持2种重要技术9)docker三个重要概念10)docker的主要用途11)docker改...

小健健的博客 1447

Docker:Window上的Boot2Docker安装和入门

最近在研究Devops,目前最热门的Docker先研究下,由于公司虚拟机申请IP麻烦,先在工作机器上安装一个Windows版本的。 Docker虽然是Linux内核,但是官方还是支持了Windows和OS X。 Boot2Docker官方下载地址:https://github.com/boot2docker/windows-installer/releases,目前最新发布版本是1.5.0.浏览

东风夜放花千树 5万+

Docker架构简介

Docker可以帮助用户在容器内部快速自动化部署应用,并利用特性命名空间(namespaces)及控制组(cgroups)等为容器提供隔离的运行环境。Docker借助操作系统层的虚拟化实现资源的隔离,因此Docker容器在运行时与虚拟机(VM)的运行有很大的区别,Docker容器与宿主机共享同一个操作系统,不会有额外的操作系统开销。这样的优势很明显,因而大大提高了资源利用率,并且提升了I/O等方面的性能。

ss810540895的博客 1388

eDP接口信号组成认识

eDP接口信号主要由Main Link、AUXCH与HPD三部分组成,如下图所示。 Main Link:表示主通道,用来传输各类型视频数据和音频数据; AUX CH:表示辅助通道,用于传输低带宽需求的数据,以及链路管理和设备控制信号; HPD:表示热插拔检测通道。 Main Link南1~4对数据线组成,每对数据线都是一对差分线。对于一款液晶屏而言,Main Link具体需几对数据线,这取决于屏幕的分辨率和彩色位数。 在该通道中传送的信号有视频像素信号、视频定时信号、视频格式信号、比特/像素及

精诚所至 2万+

SWIPT技术(无线通信携能技术)的简介与架构——(后续补充无人机SWIPT方向)

SWIPT一、SWIPT(无线通信携能)技术简介1.1、组成:1.2、与传统无线通信的区别:1.3、SWIPT 的集成接收器架构设计1、单独的接收器2、TS架构——时间开关(Time switching,TS)3、PS架构——功率分流(Power splitting,PS)4、天线开关接收器主要两种架构的区别参考文献SWIPT的发展 一、SWIPT(无线通信携能)技术简介 SWIPT(Simultaneous Wireless Information and Power Transfer )是各种WPT技术

Blue 1万+

【Docker 2】看完这篇,Docker你就入门了,从基础到源码统统帮你搞定

毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章上了。我会整理一份详细的面试过程及大家想知道的一些问题细节毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章上了。我会整理一份详细的面试过程及大家想知道的一些问题细节。

2301_81694225的博客 808

【SpringBoot】1、创建第一个SpringBoot项目

创建SpringBoot项目可以通过两种方式,1、通过访问:https://start.spring.io/,SpringBoot的官方网站进行创建SpringBoot项目;2、通过工具(例如:Idea)创建SpringBoot项目。本次使用开发工具:Idea创建我的第一个SpringBoot项目。 首先,打开我们的Idea开发工具 选择Create New Poject(创建一个新的项目) ...

JACKAL 21万+

【Docker 2】看完这篇,Docker你就入门了,java工程师面试简历模板

Docker仓库是集中存放镜像文件的场所,镜像构建完成后,可以很容易在当前宿主上运行,但是,如果需要在其他服务器上使用这个镜像,我们需要一个集中的存储、分发镜像的服务,Docker Registry(仓库注册服务器)就是这样的服务。我们可将Docker镜像看成只读模板,通过它可以创建Docker容器。centos:lastest是镜像的名称,Docker daemon发现本地没有我们需要的镜像,会自动去Docker Hub上去下载镜像,下载完成后,该镜像被默认保存到/var/lib/docker目录下。

2401_84437170的博客 960

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

funfan的博客 4270

2024年03月CCF-GESP编程能力等级认证Python编程五级真题解析

下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入( )。 A. (yr % 400 == 0) or (yr % 4 == 0) B. ( yr % 400 == 0) or (yr % 4 == 0 and yr %100 != 0) C. ( yr % 400 == 0) and ( yr % 4 == 0) D. (yr % 400 == 0) and (yr % 4 == 0 and yr % 100 != 0)

人生就是一个不断学习的过程 748

2024年最新【Docker 2】看完这篇,Docker你就入门了,超通俗解析CountDownLatch用法和源码

至此,文章终于到了尾声。技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;项目经历:只写明星项目,描述遵循 STAR 法则;简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取遵循 STAR 法则;

2401_84007015的博客 307

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7663

【学习笔记】学习Docker,看完这篇超详细的教程就足够了

本文为观看B站狂神的视频学习Docker时所整理的笔记,中间加了一些自己的理解,如果对大家有所帮助,还希望点赞支持一下,后续我会继续将自己遇到的Docker问题以及学习的新的知识全部整理添加到本文后面或者整理发布新的文章,如果感兴趣可以关注一波。 目录Docker的概述为什么需要Docker?简述虚拟机和Docker容器的区别Docker中的DevOps(开发、运维)Docker的基本组成Docker的安装前期准备(看看即可)开始安装如何卸载Docker(了解即可)配置阿里云镜像加速Run的流程以及..

weixin_43246215的博客 3万+

YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量

本文记录的是改进YOLOv11的损失函数,将其替换成Shape-IoU。现有边界框回归方法通常考虑与之间的几何关系,通过边界框的相对位置和形状计算损失,但忽略了边界框本身的形状和尺度等固有属性对边界框回归的影响。为了弥补现有研究的不足,Shape-IoU提出了一种关注边界框本身形状和尺度的边界框回归方法。

Limiiiing的博客 4598

基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。简单来说就是:一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。这也就是TF-IDF的含义。

m0_64336780的博客 1万+

看完这篇,Docker你就入门了

在计算机技术日新月异的今天, Docker在国内发展的如火如荼,特别是在一线互联网公司,Docker的使用是十分普遍的,在理解docker之前,我们先熟悉两个概念,容器和虚拟机。一、容器与...

边缘计算社区 823

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Docker入门 _看完即掌握

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

2401_83384536的博客 916

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Spring Cloud 9】看完这篇,Docker你就入门了

包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

2401_84048034的博客 628

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【云原生-Docker篇】之 Docker入门精讲

目录导航前言一、容器3W介绍1.1 什么是容器1.2 为什么需要容器1.3 容器是如何工作的二、容器技术与虚拟机技术2.1 相同2.2 不同 前言 写了几篇云原生之Docker篇的文章,发现没有写Docker入门篇,所以来补一下,希望能帮助更多刚入门Docker的同志。 一、容器3W介绍 1.1 什么是容器 容器是一种轻量级、可移植、自包含的软件打包技术,使得应用程序及其需要的支持环境一起打包,以相同的方式运行在几乎任何地方。 1.2 为什么需要容器 对开发人员来说 :Build Once, Run A

weixin_42469135的博客 5226

《Docker技术入门与实战 第4版》阅读笔记 2 Docker 镜像

《Docker技术入门与实战 第4版》阅读笔记 2 Docker 镜像

道友 677

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

前言 个人博客地址:https://slcp.top ,欢迎各位光临。 初识 是什么 Docker 是一个开源的应用容器引擎 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上 容器是完全使用沙箱机制,相互隔离 容器性能开销极低 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和

Sunshine_Mr_Sun的博客 4255

【Hono】部署篇 Docker+pm2部署

对于我来说,选择其中一种方式部署,意味着后续其他服务都用这一种方式进行部署。如果使用了docker,那我只在服务器上把docker装好,所有服务都通过docker来打包、分版本、发布、拉取、运行、重启。如果使用了pm2,我会在服务器上直接装一遍NodeBunGitNginxpm2,后续通过git管理代码,通过或是代码内管理版本,ssh工具在服务器打包代码pm2来运行和重启。当然有很多其他运维工具giteajenkins等等,我看过后感觉都不太适合我这种处于探索而非运营阶段的小水管服务器折腾。

Gnak75的博客 2072

【Docker新手篇】Docker入门

Docker入门DockerDocker 镜像获取镜像运行列出镜像删除本地镜像使用 Dockerfile 定制镜像构建镜像镜像构建上下文(Context)Docker 容器启动容器新建并启动守护态运行终止容器进入容器exec 命令Docker 实战数据卷 (达到负载均衡的效果 )启动一个挂载数据卷的容器删除数据卷Docker 构建 Tomcat查找 Docker Hub 上的 Tom运行容器Docker 构建 MySQL查找 Docker Hub 上的 MySQL 镜像导入文件过大的错误复制容器文件到宿主机

输入技术、输出想法 1066
上一篇: springboot增删改查 | Spring Boot 2
下一篇: springboot整合mybatis | Spring Boot 4
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2953原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值