前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >全面的Docker快速入门教程

全面的Docker快速入门教程

作者头像
追逐时光者
发布于 2021-11-17 02:52:05
发布于 2021-11-17 02:52:05
1.2K0
举报
文章被收录于专栏:编程进阶实战编程进阶实战

前言:

  都2021年了,你还在为了安装一个开发或者部署环境、软件而花费半天的时间吗?你还在解决开发环境能够正常访问,而发布测试环境无法正常访问的问题吗?你还在为持续集成和持续交付(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制作自己的镜像文件👉

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 是免费的,是桌面应用的形式。

官网地址: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-docs

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
🐟前端同学也能搞定 Docker:快速入门指南
前端掌握Docker要掌握到什么程度呢?其实只要能写DockerFile脚本就行了,至于深入原理和底层啊,看自己兴趣吧。毕竟Go我只会CRUD,反正目前对于我来说足够用了,下面我来介绍一下Docker水文和分享我在项目中如何使用Docker,反正就是简单粗暴,至于k8s容器编排,给我直接上腾讯云ok,毕竟我只是一个切图仔,最复杂我也只会用docker-compose,那就开始Docker之旅吧
linwu
2023/07/27
3230
🐟前端同学也能搞定 Docker:快速入门指南
这可能是最为详细的Docker入门吐血总结
在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,不信的话看看下面这张图。
Angel_Kitty
2018/10/15
5.4K2
架构师分享 Docker 新手入门完全指南
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
小小科
2018/08/17
5990
架构师分享 Docker 新手入门完全指南
Docker入门(一)-- 基础概念与安装
Docker最初是dotCloud公司的创始人Solomon Hyks在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache 2.0授权协议开源,主要项目代码在GitHub上进行维护。Docker后来还加入了Linux基金会,并成立推动开放容器联盟(OCI)。
CodingDiray
2019/11/12
6030
直击关于Docker所必须了解的知识
云原生的核心技术之一就是容器,很多人会以为Docker等于容器,其实Docker并不等于容器。其实容器可以理解为:cgroups(资源控制)+namespaces(访问隔离)+rootfs(文件系统)+engine(容器生命周期管理)。
穿过生命散发芬芳
2025/01/09
1030
docker 简介与安装
虚拟机(virtual machine)就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
cheese
2023/10/25
6970
docker 简介与安装
为什么要使用Docker?
  假定您在开发一个谷粒商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。   请问?您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?
别团等shy哥发育
2023/02/25
5530
为什么要使用Docker?
Docker 入门到实战教程(一)介绍Docker
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
小东啊
2020/07/23
8880
Docker 入门到实战教程(一)介绍Docker
Hello Docker
Docker: Build, Ship, and Run Any App, Anywhere 在任何地方构建、交付和运行任何应用 1. 引言 最近简单的学习了下Docker,本文先简要梳理下Docker涉及到的一些重要概念,后续在结合.NET Core探讨其基本用法。 2. What's Docker Docker是用GO语言编写,利用Linux内核的几个特性来提供它的功能。Docker是一个开放平台用于快速开发、分发和部署应用程序。它提供了一个操作系统级别的抽象。它隔离了应用程序对基础架构(操作
圣杰
2018/01/11
1K0
Hello Docker
分布式部署:第三章:Docker、MySQL、tomcat、Nginx、Redis部署
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
Java廖志伟
2022/09/28
1.2K0
分布式部署:第三章:Docker、MySQL、tomcat、Nginx、Redis部署
Docker 入门指南
Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
被水淹没
2023/02/25
2.2K0
Docker 入门指南
Docker容器技术(概念篇)
Docker是基于Go语言实现的开源应用容器引擎,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使的用户的应用及其运行环境能够做到“一次封装,到处运行”。
用户7386338
2020/05/29
9140
重学Docker
以前开发项目有开发的环境、测试的环境、还有生产的环境,每经过一阶段就要迁移项目。不同的环境有不同的配置,可能导致不可预估的错误,运维要经常性的改动
晚上没宵夜
2021/07/19
5510
重学Docker
了解【Docker】从这里开始
软件开发最大的难题之一就是环境配置的问题。现在用户环境纷乱复杂,并且由于开源社区的进一步推广和许多开源项目不停地迭代更新,项目可能会有越来越多的依赖以及越来越难管理的依赖版本,如何保证编写的程序能不只是在“我的电脑上能运行”(It works on my machine)成了一个复杂麻烦的事情。
我没有三颗心脏
2019/05/30
6850
Docker简述
Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中
Michel_Rolle
2023/11/22
2.9K1
Docker的架构与安装
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
timerring
2023/10/13
4330
Docker的架构与安装
Docker
参考官方:https://docs.docker.com/engine/install/centos/ 1) 卸载旧版本(如果以前安装过旧版本可以先卸载)
Java_慈祥
2024/08/06
2120
Docker
Docker 基础
之前讲了很多前端基础知识,这一篇换个口味,讲讲 Docker。然后再继续讲 JavaScript。
1ess
2021/11/01
6020
1.Docker学习之基础知识
描述:Docker [ˈdɑ:kə(r)] 是一个基于Go语言开发实现的遵循Apache 2.0协议开源项目,目标是实现轻量级的操作系统虚拟化解决方案; ,诞生于2013年初最初发起者是dotCloud公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,后续由于docker的发展后来也改名为Docker Inc,它是仅次于OpenStack最受欢迎的云计算开源项目;Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise Edition)
全栈工程师修炼指南
2022/09/28
1.6K0
1.Docker学习之基础知识
Docker 基础知识 - Docker 概述
Docker 是一个开发、发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分离,以便快速交付软件。有了 Docker,你可以像管理应用程序一样管理你的基础设施。通过利用 Docker 快速发布、测试和部署代码的方法,您可以显著减少编写代码和在生产环境中运行它之间的延迟。
用户8803964
2021/07/05
1.2K0
相关推荐
🐟前端同学也能搞定 Docker:快速入门指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档