Docker(一)入门:Docker的入门与安装

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 我们发布一个项目,可能需要Redis、Mysql、Node.js的环境,电脑上运行只需要一分钟,而环境配置可能一天都不一定,充电两小时用时五分钟的概念。

前言


本文设计到一些概念和理解,如有错误,希望可以评论或者私信指出,觉得写的好的可以点赞支持一下谢谢

我的个人博客:https://linzyblog.netlify.app/

一、Docker概述


1、Docker为什么出现(热门)?


一款产品需要开发和上线两套环境。

1)应用环境

2)应用配置


开发 — 运维之间的存在问题:

开发的电脑可以运行,到运维的电脑却不行了,开发的版本更新了,到运维的电脑导致服务不可用了,运维这边就需要重新同步版本环境与配置,难度就很大了。


但是环境配置是十分麻烦的,每一台机器都要重新部署环境(集群Redis,Node.js,Mysql…),部署错误还会重新来过,又费时又费力。


我们发布一个项目,可能需要Redis、Mysql、Node.js的环境,电脑上运行只需要一分钟,而环境配置可能一天都不一定,充电两小时用时五分钟的概念。


如果我们可以把项目和环境一起安装打包,而不是单纯的一个项目包。


Docker就是来完成这个事情的技术


  • 传统:开发人员就开发项目,运维来做部署这些事情
  • 现在:开发打包部署上线,一套流程做完


概念理解:

exe安装包 – >发布(应用商店) – > 用户下载安装 – > 安装即可用

Golang项目(环境) – > 项目和环境一起打包(Docker镜像) – > Docker仓库 – > 用户下载发布的Docker镜像 – > 下载即可用


二、Docker的思想


看看Docker的Logo,他的思想就来自于集装箱。


a5e2885db7854fb7a790f5869bec431e.png


Docker的核心思想:隔离,打包装箱,每个箱子之间是互相隔离的


1、项目部署环境问题


大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题


  • 依赖关系复杂,容易出现兼容性问题
  • 开发、测试、生产环境有差异


0393a1c5f8ff4fd7a629185d1a11657c.png


在项目中部署时需要依赖于node.js、Redis、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。


2、用Docker完美解决问题


9636cd5d9ab04521b0fe27c704a84911.png


这样打包好的应用包中,既包含应用本身,也保护应用所需要的环境,无需再操作系统上安装这些,自然就不存在不同应用之间的兼容问题了。


3、Docker解决操作系统环境差异


解决了不同应用的兼容问题,但是开发、测试的环境也会存在差异,操作系统版本也有差异,相对应的函数库和依赖项都是基于操作系统,从而导致不兼容。


先了解一些操作系统结构,以Ubuntu操作系统为例


Ubuntu操作系统结构包括:


1.计算机硬件:例如CPU、内存、磁盘等


2.系统内核:所有Linux发行版的内核都是Linux,例如CentOS、Ubuntu、Fedora等。内核可以与计算机硬件交互,对外提供内核指令,用于操作计算机硬件。


3.系统应用:操作系统本身提供的应用、函数库。这些函数库是对内核指令的封装,使用更加方便。


应用于计算机交互的流程如下:


1.应用调用操作系统应用(函数库),实现各种功能


2.系统函数库是对内核指令集的封装,会调用内核指令


3.内核指令操作计算机硬件


如果我们将一个Ubuntu版本的MySQL应用安装到CentOS系统,MySQL在调用Ubuntu函数库时,会发现找不到或者不匹配,就会报错了


Docker如何解决不同系统环境的问题?


1.Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包


2.Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行


三、Docker的历史


2010年,几个搞IT的年轻人,在美国成立了一家公司 dotCloud, 公司业务就是做一些PasS的云计算服务,是LXC有关的容器技术。


他们将自己的技术(容器化技术)命名为Docker,Docker诞生的时候并没有引起行业的关注,为了让公司能够存活下去,于是他们想到了一个方法:开源,把内部的代码全部开放给所有人,大家可以一起参加进来。


2013年,Docker开源后,越来越多的工程师发现了Docker的优点,Docker火了以后,几乎每个月都会更新一个版本。


2014年4月9日,Docker1.0发布!


到现在,Docker已经是所有开发人员都必须要了解掌握的一门技术。


四、Docker的优势


Docker 是一个开源的轻量级容器技术,让开发者可以打包他们的应用以及应用运行的上下文环境到一个可移植的镜像中,然后发布到任何支持 Docker 的系统上运行。 通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔离运行环境,Docker是基于Go语言开发的技术。


  • 简化配置
  • 代码流水线管理
  • 提高开发效率
  1. 隔离应用
  • 快速、持续部署


1、应用更快速的交付和部署


  • 传统:一堆的帮助文档,安装程式,部署环境
  • Docker:打包镜像发布测试,一键运行


2、更快捷的升级和扩缩容


使用Docker之和,部署应用就跟搭积木一样,项目打包为一个镜像,可以扩展到服务器。


3、更简单的系统运维


容器化之后,开发、运维、测试环境都是高度一致的。


4、更高效的计算资源利用


Docker是内核级别的虚拟机,可以在一个物理机上可以运行很多的容器示例,服务器的性能可以被压榨到极致。


五、Docker与虚拟机的区别


在Docker容器技术还没出来之前,我们都是使用虚拟机技术。


  • 虚拟机:在Windows操作系统做我们安装一VMware,通过这个软件我们可以虚拟一台或多台电脑,虚拟机是属于虚拟化技术。

。优点:虚拟机跟真实电脑是差不多,可以在操作系统中模拟硬件设备。

。缺点:虚拟机很笨重,启动时间很慢,虚拟机所占用的空间都很大,如果只是一些简单命令,就是大材小用。


  • Docker容器技术:Docker是一个系统进程,Docker容器技术也是虚拟化技术,最大的区别就是体量的不同。

。优点:十分小巧,只是把项目和环境一起打包成Docker镜像,运行镜像就可用了,启动时间很快,秒级启动。

。缺点:并没有模拟操作系统。


Docker和虚拟机的区别对比:


特性 Docker 虚拟机
性能 接近原生 性能差
硬盘占用 一般为MB 一般为GB
启动 秒级 分钟级


  • 传统虚拟机虚拟出一套硬件,模拟了一个完整的操作系统,然后在这个系统上安装和运行软件。


  • 容器内的应用直接运行在宿主机上的,容器没有自己的内核,也没有虚拟出硬件,所以比虚拟机轻便小巧。


  • 每个容器间都是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响。


六、Docker基本架构


Docker 包括三个基本概念:


  • 镜像(Image):Docker 镜像(Image),就相当于是一个 模板,可以通过模板来创建容器服务,通过这个镜像我们可以创建多个容器,最终服务运行或项目运行都是在容器中的。


  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,Docker利用容器技术,独立运行一个或一组应用,都是通过镜像来创建的,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。


  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像,仓库分为公有仓库和私用仓库。


Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。


  • 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
  • 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。


f323569105094f77956a37a5f57c90aa.png


七、Docker安装


官网https://www.docker.com/

文档地址:https://docs.docker.com/

仓库地址:https://hub.docker.com/ 类似于Github的远程仓库

1、下载


Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。

Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows

注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版!


2、安装 Hyper-V


Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。


但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!


3、开启 Hyper-V


1)打开Windows设置


2ee40591b6bf407f91b5eb1db308a2fc.png


2)选择应用拉到最底下选择程序和功能


8e82b091c7ae47a281d62e1012d75230.png


3)选择启用或关闭Windows功能


4334f37abe214aa6a564e739f1ed14da.png


4)选中Hyper-V


bfdf4337d07447d58b487c8a4b1579a7.png


也可以通过命令来启用 Hyper-V ,请右键开始菜单并以管理员身份运行 PowerShell,执行以下命令:


Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All


3、安装


安装非常简单,不赘述。安装成功后查看windows任务栏会出现docker的经典logo,小鲸鱼 安装完成后,会出现一个弹出框,


提示:close and restart 此时需要重新启动计算机


打开我们的windows Terminal(CMD),输入docker -v看看是否安装成功了


52311aaed7c54023a4e2fc687b450830.png


4、启动 Docker Desktop


5238c0e675754d88be3adaac3c0270da.png


可以开始我们的操作了


5、验证Docker Desktop


打开刚才下载的windows Terminal运行以下命令


docker run hello-world


看到以下输出则表示安装成功,且能正常工作:


0a0d1fef2d4a4acb861ca742dcec2320.png


Docker Desktop已经存在hello-world镜像,表示已经拉取成功了


bc6d744d1a1b4e968d748284e5722efe.png


至此我们的Docker Desktop安装成功,同样的我们也可以通过命令行进行安装,这里就不一一介绍了


详细参考官方文档:https://docs.docker.com/desktop/install/windows-install/


八、Docker命令


1、查看docker版本信息


docker version

2d85e52fefd44fe09cf62b9aebc6836a.png


2、查看docker镜像


docker images

db37be48007a4f10a5e5aaabb03b4d46.png


3、删除docker镜像


docker rmi 镜像ID


现在想删除镜像hello-world,则可以使用下述命令:


5252891f4e444d9e904541ef35cb6984.png

b94aae17ff5645da89536570b9d847ac.png


hello-world镜像已经不见了


如果出现这个错误,表示有容器使用这个镜像要先把容器删除才能删除这个镜像


b53df5e5db514070a09c640e50c71265.png


4、查看所有的容器


docker ps -a

ac07bd2b7f5b487581bc20debb5eb7b7.png


5、删除容器


docker rm 容器ID

f088f9eeda6c453b9fe169485a2d3a30.png


如上图所示,docker中存在容器ID名为“b3aa29b38d53”的容器,如果我们想删除这一个容器,那么在该容器得停止后可以使用下述命令:


968841841cea4bc2ac6fc1a9a4ab5ab1.png


可以看到在使用了上述删除某一个容器之后,再次查看容器列表发现之前的容器已经不存在了。


6、查看docker帮助命令


docker --help

d04cf60adcc342e697fd25bf89bb0f09.png


7、查看容器的数据卷


我们想查看容器的配置情况,可以使用这个命令


docker inspect 容器ID

8d9b997a06d34e5ebc5db201145a9512.png


我们想查看容器"cf559505fc9c"的配置情况,可以直接输入命令:


9b5998ac03b540488e6400d702bd2433.png


8、拉取镜像


docker pull 镜像名:指定版本

f76d42d027164c99a2a791aab76f246d.png

744e898a67d6439ab90e58bb0a6e5141.png


Docker就存在两个MySQL了,一个是刚拉取的最新版MySQL镜像,另一个是指定版本安装的MySQL镜像。

目录
相关文章
|
9天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
40 2
|
4天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
12天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
1月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
306 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
17天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
54 2
|
22天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
59 2
|
24天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
56 2
|
25天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
36 3
|
25天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
32 3
|
27天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
228 3
下一篇
无影云桌面