全面的Docker快速入门教程

前言:

  都2023年了,你还在为了安装一个开发或者部署环境、软件而花费半天的时间吗?你还在解决开发环境能够正常访问,而发布正式环境无法正常访问的问题吗?你还在为持续集成和持续交付(CI / CD)工作流程苦恼吗?那还在犹豫是什么,Docker能够完美的解决你遇到这所有的问题。

Docker是什么?

  Docker 是一个开源的应用容器引擎,基于 Golang 语言开发,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 服务器。容器是一个沙箱机制,相互之间不会有影响(类似于我们手机上运行的 app),并且容器开销是很低的。

  Docker 是一个供开发人员和系统管理员构建、运行和与容器共享应用程序的平台。使用容器部署应用程序称为容器化。容器并不是新事物,但它们用于轻松部署应用程序却是新鲜的。

注意:Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。

Docker的优势有哪些?

  • 灵活性:即使是最复杂的应用程序也可以容器化。

  • 轻量级:容器利用并共享主机内核,使它们在系统资源方面比虚拟机更有效率。

  • 可移植:您可以在本地构建,部署到云上,并在任何地方运行。

  • 松耦合:容器是高度自给自足和封装的,允许您在不影响其他容器的情况下替换或升级其中一个。

  • 可扩展:您可以跨数据中心增加和自动分发容器副本。

  • 安全性:容器对进程应用主动约束和隔离,而不需要用户进行任何配置。

Docker的作用?

  Docker 是一个用于开发、传送和运行应用程序的开放平台。Docker 使您能够将应用程序与基础设施分开,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 的快速交付、测试和部署代码的方法,您可以显着减少编写代码和在生产中运行代码之间的延迟。Docker(opens new window)是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和掌握 Docker,节约有限的生命。

Docker主要用来解决什么问题?

Docker的出现主要就是为了解决:在我的机器上运行时是正常的,但为什么到你的机器上就运行不正常了。

  比如你写一个Web应用,并且本地调试没有任何问题。这时候你想发给你的朋友试试看或者发布部署到远程的云服务器上查看效果,那么首先你需要配置和你本地相同的软件环境,如数据库,Web服务器(IIS,Tomcat,Nginx),必要的插件,库等等。而这你还不能保证的你的软件一定能够运行起来,因为别人可能用完全不同的操作系统,即便是使用Linux每种发行版也会有微小的区别。

图片

为了模拟完全相同的本地开发环境。

我们首先想到的就是虚拟机,但是虚拟机需要模拟硬件,运行整个操作系统不但体积臃肿内存占用高,程序的性能也会受到影响。

如下图是比较常用的虚拟机:

图片

Docker的脱颖而出:

  这时候Dokcer就派上了用场,Docker在概念上与虚拟机非常类似。但是Docker更轻量,它不会去模拟底层的硬件 ,只会为每一个应用提供完全隔离的运行环境。你可以在容器中配置不同的应用环境,并且不用的环境之间互相不影响,这个“环境”在Docker中也被称作为Container(容器)。

图片

Docker和虚拟机技术的区别?

  Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker技术比虚拟机技术更为轻便、快捷。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

图片

图片

如果想详细了解,可以参考文章:docker与虚拟机的区别👉

Docker容器和虚拟机的区别总结:

特性

docker容器

虚拟机

启动

秒级

分钟级

硬盘使用

一般为MB

一般为GB

性能

接近原生(宿主机)

弱于原生

系统支持量

单机支持上千个容器

一般几十个

Docker中的三个重要概念

Docker中的三个重要概念分别是:Image(镜像),Container(容器),Repository(仓储)。

Image(镜像)一个特殊的文件系统

你可以把它理解成一个虚拟机的快照(Snapshot),里面包含了你要部署的应用程序以及它所关联的所有库。

  操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

图片

Container(容器)镜像运行时的实体

这里的容器就像是一台台运行起来的虚拟机,里面运行了你的应用程序,每个容器是独立运行的他们相互之间不影响。通过一个镜像,我们可以创建许多个不同的Container容器。

  镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和类的实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

 

图片

Repository(仓储)集中存放镜像文件的地方

  镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务(就像Git仓库一样),Docker Registry就是这样的服务。
  一个Docker Registry中可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

Docker 架构及工作原理

  Docker使用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发Docker容器等繁重的工作。Docker 客户端和守护进程可以运行在同一个系统上,或者您可以将一个 Docker 客户端连接到一个远程 Docker 守护进程。Docker 客户端和守护进程通过 UNIX 套接字或网络接口使用 REST API 进行通信。

Docker 架构及工作原理详情介绍👉

图片

Dockerfile(自动化脚本)

主要是用来创建我们之间讲到的镜像,这个过程就好比我们在虚拟机中安装操作系统和软件一样,只不过是通过Dockerfile这个自动化脚本完成的。

Dockerfile详解教程文章:Dockerfile制作自己的镜像文件👉:https://cloud.tencent.com/developer/article/1494366

Docker管理工具

图片

Portainer(推荐)

图片

介绍:Portainer是一个开源的、轻量级的Docker环境管理UI(是Web应用的形式),可以用来管理Docker宿主机和docker swarm集群。

Github 上项目地址:https://github.com/portainer/portainer

官网地址:https://www.portainer.io

支持的系统:Linux, Mac OS X, Windows。

功能特性:

  • 管理仓库、网络、数据卷、密钥、镜像、容器

  • 管理你的配置,例如告警、监控

  • 支持容器的健康检查

  • 容器的启动、停止、恢复、删除

  • 检查容器、查看容器日志、可视化状态查看

  • 进入容器控制台

  • 可以添加扩展

  • 有一套 RBAC 基于角色的权限控制系统

DockStation

图片

介绍:DockStation是一个免费的、以开发人员为中心的用于管理基于 Docker的桌面应用程序。您可以仅使用 GUI 来监控、配置和管理服务和容器,而不是大量的 CLI 命令。

官网地址:https://dockstation.io/

Github地址:https://github.com/DockStation/dockstation

支持的系统:Linux, Mac, Windows

功能特性:

  • 可以非常方便的操作 Docker 和 DockerCompose。

  • 可以帮助我们管理容器、Service服务(本地远程都可以),并监控他们

  • 可以轻松跟踪 CPU、内存、网络、磁盘I/O、开放端口

  • 可以把常用的操作组织成一个项目,通过项目的方式来检查容器状态,以图形化的方式管理。

Docker Desktop

图片

介绍:Docker Desktop 是一款易于安装的应用程序,使您能够构建和共享容器化应用程序和微服务。

官网地址:https://www.docker.com/products/docker-desktop

支持的系统:Mac, Windows

功能特性:

  • 能够以多种语言和框架在任何云平台上容器化和共享任何应用程序

  • 轻松安装和设置完整的 Docker 开发环境

  • 包括最新版本的 Kubernetes

  • 自动更新,让您保持最新状态和安全

  • 在 Windows 上,能够在 Linux 和 Windows Server 环境之间切换以构建应用程序

  • 使用本机 Windows Hyper-V 虚拟化实现快速可靠的性能

  • 能够通过 Windows 机器上的 WSL 2 在 Linux 上本地工作

  • 代码和数据的卷安装,包括文件更改通知和轻松访问本地主机网络上运行的容器

  • 使用支持的 IDE 进行容器内开发和调试

Docker学习系列文章

  • 十本你不容错过的Docker入门到精通书籍推荐

  • Docker日常工作常用命令

  • CentOS 8.4安装Docker

  • Windows10 Docker安装详细教程

  • Ubuntu 20.04安装Docker

  • Ubuntu添加非root用户到Docker用户组

  • Docker安装Redis并使用Another Redis Desktop Manager连接

  • Docker安装MySQL并使用Navicat连接

  • Docker安装MongoDB并使用Navicat连接

  • Docker安装MS SQL Server并使用Navicat远程连接

  • Ubuntu20.04+docker+jenkins+飞书实现自动化发布

公众号回复关键字:Docker学习,领取更多Docker入门到实践学习资料。

图片

参考文章:

官方Docker-docs:https://docs.docker.com/

Docker 10分钟快速入门-B站视频:

https://www.bilibili.com/video/BV1s54y1n7Ev/?vd_source=80a86d5367dd2f517916f80fea5a60f3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/163702.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux安装MINIO

MINIO简介MINIO目录 mkdir -p /opt/minio/data && cd /opt/minio MINIO下载 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio MINIO授权 chmod x minio MINIO端口 firewall-cmd --zonepublic --add-port7171/tcp --permanent && firewal…

ios safari 正则兼容问题

背景: 系统是自己开发的采购管理系统; 最近升级系统之后客户反馈部分苹果手机现在在进入单据界面的时候报错, 内容显示不全; 安卓手机正常; 苹果首页是之前有使用过系统的才不行, 如果是之前没有使用过系统, 现在也是可以; 也尝试清理过缓存,更换浏览器都也是不行; 也更…

分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测

分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测…

想找就能找!如何找回iPhone中被隐藏或主屏幕上被删除的应用程序

本文介绍了如何取消隐藏你在iPhone上隐藏的应用程序&#xff0c;以及如何检索你从iPhone中删除的应用程序。 如何取消隐藏隐藏的应用程序 你过去可能在iPhone上隐藏了应用程序&#xff0c;因为你不经常使用它们&#xff0c;或者你只是喜欢几个整洁的主屏幕。如果你决定将隐藏…

uni-app checkout(多选)radio(单选)选中之后样式不会出现钩子

前言 最近在实际开发过程中发现项目的多选和单选选中之后都是只有颜色&#xff0c;没有钩子&#xff0c;或者是另外图案 刚开始并不重视&#xff0c;猜测可能是微信基础库的bug&#xff0c;可能换个基础库就行了&#xff0c;或者是编辑器显示问题 最后在查阅之后才发现&#…

ORACLE 特殊日期时间转换,计算

一&#xff1a;特殊日期处理 如该字段存储日期形式为&#xff1a;2023/4/23 9:00&#xff0c;2023-3-1 12:23。将这样的数据转换成正确的格式&#xff08;yyyy-mm-dd HH24:mi:ss&#xff09;&#xff0c;即为&#xff1a;2023-04-23 09:00:00。这里举例的字段为&#xff1a;JS…

Simple RPC - 02 通用高性能序列化和反序列化设计与实现

文章目录 概述设计实现通用的序列化接口通用的序列化实现【推荐】 vs 专用的序列化实现专用序列化接口定义序列化实现 概述 网络传输和序列化这两部分的功能相对来说是非常通用并且独立的&#xff0c;在设计的时候&#xff0c;只要能做到比较好的抽象&#xff0c;这两部的实现…

Spring5学习笔记之整合MyBatis

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Spring专栏 ✨特色专栏&#xff1a; M…

nvm 安装 node 安装不上 npm

遇到一个问题 nvm install 18.18.2 node -v 安装上了 npm -v 发现没有安装上 解决办法 nvm -v 查看到自己的 nvm 版本号是 1.1.7 NVM下载 - NVM中文网 下载最新版本的 nvm .exe 文件 nvm list 查看手里 node 的所有版本 nvm uninstall 各个版本只保留一个最低版本 点…

百分点科技受邀参加“一带一路”国际合作高峰论坛

10月17-18日&#xff0c;第三届“一带一路”国际合作高峰论坛在北京成功举行。作为新一代信息技术出海企业代表&#xff0c;百分点科技董事长兼CEO苏萌受邀出席高峰论坛开场活动——“一带一路”企业家大会&#xff0c;与来自82个国家和地区的企业或机构、有关国际组织、经济机…

从功能测试到自动化测试,待遇翻倍,我整理的超全学习指南!

在这个吃技术的IT行业来说&#xff0c;我刚入行的时候每天做的也是最基础的工作&#xff0c;但是随着时间的消磨&#xff0c;我产生了对自我和岗位价值和意义的困惑。 一是感觉自己在浪费时间&#xff0c;另一个就是做了快2年的测试&#xff0c;感觉每天过得浑浑噩噩&#xff…

《数据结构、算法与应用C++语言描述》使用C++语言实现数组队列

《数据结构、算法与应用C语言描述》使用C语言实现数组队列 定义 队列的定义 队列&#xff08;queue&#xff09;是一个线性表&#xff0c;其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾&#xff08;back或rear&#xff09;&#xff0c;删除元素的那一端称…

并发编程——2.基础概念及其它相关的概述

这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。 目录 1.J.U.C 2.进程、线程、协程 2.1进程 2.2线程 2.3纤程&#xff08;协程&#xff09; 2.4概念小结 3.并发、并行、串行 3.1并发 3.2并行 3.3串行 3.4概念小结 4.CPU核心数和线程数的关系 5.上下文…

直线模组有哪些配件组成的?

直线模组又称线性模组或线性滑台&#xff0c;是自动化设备中重要的传动元件&#xff0c;主要由以下几部分组成&#xff1a; 1、直线导轨&#xff1a;直线导轨又称线性滑轨&#xff0c;是用于直线往复运动场合的重要零部件&#xff0c;它具有比直线轴承更高的额定负载&#xff0…

SpringBoot面试题3:Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? Spring Boot 的核心注解是 @SpringBootApplication。 @SpringBootApplication 是一…

IDEA2023.1版本新建Web项目并配置本地Tomcat

IDEA2023.1版本新建Web项目并配置本地Tomcat 一、新建Web项目 一、新建Web项目 由于我最初是新建了一个空项目作为工作空间的&#xff0c;所以这里选择直接新建module&#xff0c;如下所示。&#xff08;这里使用的是idea的newUI&#xff09; 新建module&#xff0c;输入信息…

waf、yakit和ssh免密登录

WAF安全狗 脏数据适用于所有漏洞绕过waf&#xff0c;但是前提条件垃圾信息必须放在危险信息前&#xff0c;是不能打断原有数据包的结构&#xff0c;不能影响后端对数据包的解析。 以DVWA靶场文件上传为例 新建php文件 上传文件被安全狗拦截 使用bp抓包查看 在数据包Content-…

基于Java的农资采购销售管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

MySQL高可用架构学习

MHA&#xff08;Master HA&#xff09;是一款开源的由Perl语言开发的MySQL高可用架构方案。它为MySQL 主从复制架构提供了 automating master failover 功能。MHA在监控到 master 节点故障时&#xff0c;会提升其中拥有最新数据的 slave 节点成为新的 master 节点&#xff0c;在…

Apache DolphinScheduler 3.0.0 升级到 3.1.8 教程

安装部署可参考官网 Version 3.1.8/部署指南/伪集群部署(Pseudo-Cluster)https://dolphinscheduler.apache.org/zh-cn/docs/3.1.8/guide/installation/pseudo-cluster 也可以参考我写贴子 DolphinScheduler 3.0安装及使用-CSDN博客DolphinScheduler 3.0版本的安装教程https:…