【Docker】Linux中Docker技术入门与实战及实用的常规命令

目录

一、引言

1. 说明:

2. Linux介绍

3. Docker简介

二、Docker三要素

1. 镜像(Image)

2. 容器(Container)

3. 仓库(Repository)

三、实现案例

1. 创建

2. 设置镜像

3. 开启设置

4. Docker安装

5. Docker使用及命令

每篇一获


一、引言

1. 说明:

  • Linux是开源的,因此是免费的。Web主机仅需要支付技术支持即可安装和维护程序(如果需 要)。服务器提供商不需要将额外的成本转嫁给客户。另一方面,对于Windows服务器,公司通常
  • 必须为操作系统和定期使用许可证付费。
  • Linux服务器及其运行的应用程序通常设计为精益运行,因此通常使用较少的计算机资源。好处是 程序员可以“即时修改Linux服务器和软件,而无需重新启动,这在Windows环境中是不可能的。 Microsoft
  • Windows服务器在多数据库任务下趋向于变慢,崩溃的风险更高。
  • LinuxWindows更安全。尽管没有哪个系统能幸免于黑客和恶意软件的攻击,但是Linux往往是 一个低调的目标。由于Windows运行着世界上大多数软件,因此,黑客们渴望获得低挂的果实 Windows。
虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
微服务的部署策略
  • 部署单体应用意味着运行大型应用的多个相同副本,通常提供若干台(N)服务器(物理机或虚拟 机),在每台服务器上运行若干个(M)应用实例。部署单体应用并不总是简单明了,但还是比部署微 服务应用简单。
  • 微服务应用由几十甚至数百个服务组成。服务用不同的语言和框架写成,每个都是一个小应用,包括特 定的部署、资源、扩展和监控需求,例如,根据服务需求运行若干数量的服务实例。
  • 此外,每个服务实例必须配套提供适当的 CPU、内存 和 I/O 资源。更具挑战性的是,尽管如此复杂,部 署服务还必须快速、可靠和性价比高。

基于主机(物理机或虚机)的多服务实例

  • 基于主机的多服务实例模式是最为传统的应用程序部署方法。
  • 在该模式下,软件开发人员可以提供单个或多个物理机或虚机,同时在每个主机上运行多个服务实例。
此模式有几种不同的实现形式,其中包括:将每一个服务实例都作为一个单独的进程,或是在同一进程 中运行多个服务实例。
优点:
由于多个服务实例使用的是同一服务器及其操作系统,因此它们的资源使用效率相对较高。
不足:
  • 除非每个实例都是一个单独的进程,否则您对服务实例的实际控制权并不大。而且,您无法 限制每个实例能够使用到的资源比例。这将带来主机内存被大量消耗的隐患。
  • 如果多个服务实例在同一进程中运行,它们之间会缺乏隔离关系。这通常会导致在相同进程 中,某个行为异常的服务能够直接影响、甚至中断其他的服务。
  • 由于运营团队需要了解服务的详细信息,因此在部署期间,他们可能发生人为错误的风险较 高。显然,开发和运营团队之间需要通过必要的信息交换,来尽可能地消除复杂性。
基于容器的服务实例
基于容器的服务实例,是指使用容器技术(如Docker)来部署和运行服务的实例。容器是一种轻量级的虚拟化技术,它可以将应用及其所有依赖打包在一起,形成一个标准化的单元,用于软件开发和部署。
  1. 环境一致性:容器可以确保在不同环境(开发、测试、生产)中运行相同的软件和配置,从而避免了"在我机器上可以运行"的问题。

  2. 快速启动和扩展:容器可以在几秒钟内启动,这使得动态扩展和分发应用变得非常简单和快速。

  3. 资源隔离:每个容器都在自己的命名空间中运行,与其他容器隔离。这意味着它们可以有自己的进程、文件系统和网络栈,从而提高了安全性和稳定性。

  4. 资源利用率高:与传统的虚拟机相比,容器更加轻量级,占用的资源更少,因此可以在同样的硬件上运行更多的服务实例。

基于容器的服务实例广泛应用于微服务架构、持续集成/持续部署(CI/CD)等场景。

使用这一模式时,用户将服务打包为容器镜像。每个容器镜像就是一个文件系统镜像,由应用和运行服 务所需的库构成。

有的容器镜像还包括完整的 Linux 根文件系统,有的则更轻量。 以部署 Java 服务为例,构建的容器镜像包括 Java 运行时、Apache Tomcat 服务器、以及编译好的 Java 应用。

一旦将服务打包为容器镜像,就启动一到多个容器。通常每个物理机或虚拟主机上会运行多个容器,会 用到 Kubernetes Marathon 这样的集群管理工具来管理容器。

集群管理工具把主机看做资源池,根据每个容器需要的资源和每个主机上可用的资源来调度容器。

容器的优点与虚拟机类似,服务实例之间完全隔离,也能轻松监控每个容器的资源消耗。

2. Linux介绍

Linux 是一种自由和开放源代码的操作系统,它是基于POSIX标准的Unix操作系统的一种。Linux最初是由芬兰学生林纳斯·托瓦兹(Linus Torvalds)在1991年创建的。他在开发Linux时,参考了UNIX操作系统的设计理念,使得Linux具有了良好的性能和强大的功能。

Linux的主要特点包括:

  1. 开源:Linux的源代码对所有人开放,任何人都可以查看、修改和发布。这使得Linux有着强大的定制能力和灵活性。

  2. 稳定性:Linux系统非常稳定,不容易崩溃,这使得它在服务器和企业环境中得到了广泛的应用。

  3. 安全性:Linux有着良好的安全机制,如用户权限管理、防火墙等,可以有效防止恶意软件和黑客攻击。

  4. 兼容性:Linux可以运行在各种硬件平台上,包括个人电脑、服务器、超级计算机、嵌入式设备等。

  5. 社区支持:由于Linux是开源的,所以有着庞大的开发者社区,可以提供丰富的软件资源和技术支持。

Linux的应用领域非常广泛,包括:

  1. 服务器:Linux被广泛用于服务器领域,如网页服务器、数据库服务器、邮件服务器等。由于其稳定性和安全性,许多大型网站和企业都选择使用Linux作为服务器操作系统。

  2. 嵌入式系统:Linux也常用于嵌入式系统,如路由器、电视、汽车等。因为Linux可以定制,所以能够满足各种特殊的需求。

  3. 科学计算:Linux在科学研究和高性能计算中也有广泛的应用,许多科研机构和大学都使用Linux进行科学计算和数据分析。

  4. 桌面系统:虽然Linux在桌面系统的市场份额不高,但是有许多针对桌面用户的Linux发行版,如Ubuntu、Fedora等,它们提供了友好的用户界面和丰富的软件资源,可以满足大部分用户的日常需求。

3. Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。

  1. 环境一致性:通过Docker,开发者可以在本地构建、测试并部署新的应用或服务,然后将其整个容器发布到生产环境中。这样可以确保应用在不同环境中的一致性,避免了"在我机器上可以运行"的问题。

  2. 快速部署:Docker容器可以快速启动,只需几秒钟就可以从启动到运行。这使得动态扩展和分发应用变得非常简单和快速。

  3. 资源隔离:每个Docker容器都运行在自己的环境中,互不干扰。这提供了一种轻量级的虚拟化方式,使得应用可以在同一台机器上独立运行。

  4. 资源利用:与传统的虚拟机技术相比,Docker容器在系统资源方面的开销更小。多个Docker容器可以共享同一台机器的操作系统内核,从而实现更高效的资源利用。

二、Docker三要素

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

1. 镜像(Image)

Docker 镜像(Image) 是创建 Docker 容器的基础。它是一个轻量级、可执行的独立软件包,包含运行某个软件所需的所有内容,包括代码、运行时环境、库、环境变量和配置文件。

  1. 提供运行环境镜像包含了运行应用所需的所有环境,包括操作系统、运行时环境(如 Java、Python 等)、应用程序以及相关的依赖库。
  2. 保证环境一致性由于镜像包含了运行应用所需的所有环境,因此无论在哪台机器上运行这个镜像,都能保证应用的运行环境是一致的。这解决了"在我机器上可以运行"的问题。
  3. 便于分发和版本控制Docker 镜像可以很方便地进行版本控制、分发和备份。用户可以从 Docker Hub 等公共仓库下载别人分享的镜像,也可以将自己的镜像上传到公共仓库供他人使用。

2. 容器(Container)

Docker 容器(Container) 是 Docker 镜像(Image)的运行实例。它可以被启动、停止、删除,并且每个容器之间是相互隔离的。

  1. 运行应用:容器提供了一个独立的环境,可以在其中运行和测试应用。每个容器都运行在自己的进程空间内,拥有自己的网络接口和文件系统,从而保证了应用的运行环境的一致性。

  2. 环境隔离:每个容器都在自己的命名空间中运行,与其他容器隔离。这意味着它们可以有自己的进程、文件系统和网络栈,从而提高了应用的安全性。

  3. 资源控制:Docker 允许你对容器的资源使用进行限制,包括 CPU、内存等。这可以防止一个容器占用过多的系统资源,影响其他容器的运行。

  4. 便于管理和迁移:由于容器包含了运行应用所需的所有环境,因此可以很容易地将容器迁移到其他机器上运行。同时,Docker 提供了一系列的命令,可以方便地管理容器的生命周期。

3. 仓库(Repository)

Docker 仓库(Repository) 是用于存放和分发 Docker 镜像的地方。它可以是公开的,也可以是私有的,类似于代码仓库,如 GitHub。

  1. 存储镜像:Docker 仓库提供了一个集中的地方,用于存储和管理 Docker 镜像。这使得开发者可以方便地上传和下载镜像。

  2. 分发镜像:当你创建了一个新的 Docker 镜像后,你可以将它推送(push)到 Docker 仓库。其他人可以从仓库中拉取(pull)这个镜像,然后在自己的机器上运行。

  3. 版本控制:Docker 仓库还提供了版本控制的功能。每次你更新镜像并推送到仓库时,都会创建一个新的镜像版本。这使得你可以方便地回滚到旧的镜像版本,或者切换到不同的镜像版本。

  4. 共享和协作:通过 Docker 仓库,开发者可以方便地共享他们的镜像,并与其他开发者协作。例如,你可以将你的镜像推送到公开的 Docker 仓库,让其他人可以使用和改进你的镜像。

三、实现案例

需要有VMware Workstation Pro,而VMware Workstation Pro中需要有CentOS

1. 创建

 以上的操作可以康我博客中的Centos安装配置&MobaXterm中的配置及MobaXterm使用 

【Linux】安装配置解决Centos&MobaXterm的使用及Linux常用命令&命令模式icon-default.png?t=N7T8https://blog.csdn.net/SAME_LOVE/article/details/134091961?spm=1001.2014.3001.5501

新建虚拟机

以下按照我的选项和填写的内容后点击下一步及完成即可。

这里的名称可以自己输入,这个浏览存放的路径不用放在C盘。

2. 设置镜像

如图操作,

3. 开启设置

稍等片刻后,进行选择语言显示,我们选择中文,当然记得自己可以也可以选择其他语言,

选择后点击右下方的继续..

 

密码设置完成后,等待安装完成。。完成后,点击重启。。。

开机之后,稍等片刻,就需要输入账号及密码。

(输入的密码不会显示,按照自己设置的密码即可)

账号 : root

密码 : 是自己在安装是设置的密码

如果账号密码输入错误,需要重新输入,如图 : 

之后的操作就可以康我博客中的Centos安装配置&MobaXterm中的配置及MobaXterm使用 

【Linux】安装配置解决Centos&MobaXterm的使用及Linux常用命令&命令模式icon-default.png?t=N7T8https://blog.csdn.net/SAME_LOVE/article/details/134091961?spm=1001.2014.3001.5501

4. Docker安装

安装必要的系统工具,输入命令:

yum install -y yum-utils device-mapper-persistent-data lvm2

如图: 

配置阿里云Docker Yum源,输入命令:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux

如图:

更新yum缓存 : yum makecache fast 

如果更新yum缓存报错输入命令:-- rm -f /var/run/yum.pid 

安装docker-CE,输入命令:  yum -y install docker-ce

5. Docker使用及命令

安装之后启动服务: systemctl start docker

启动之后查看服务: systemctl status docker 

关闭服务: systemctl stop docker

启动开机自启(docker)的命令:systemctl enable docker

关闭开机自启(docker)的命令:systemctl disable docker

配置镜像加速器

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 

在自己的阿里云账号中点击控制器,点击容器镜像服务ACR,点击镜像加速器其中就有配置镜像加速器的命令。

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF' {

"registry-mirrors": ["https://n60zeice.mirror.aliyuncs.com"]

} EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

将以上命令全部复制粘贴后直接执行即可

之后查看是否配置成功:cat /etc/docker/daemon.json

下载镜像:docker pull  nginx (nginx:镜像名,可自己修改)

查看宿主机上的镜像:docker images

如需获取一个 centos 系统的基础镜像可以使用

如下的命令: docker pull centos (未指定版本一般会使用latest(最新的)版本)

                    docker pull centos:版本号 (或者直接指定版本) 

容器的详细属性:

 

创建容器:

docker create nginx  (创建后容器名称是随机的)

docker create -it --name n1 nginx (创建指定容器的名称,容器名:n1,可修改)

 启动、停止、重启容器:

docker start   n1 [容器ID/名称]  (启动,根据名称或者ID)

docker stop   n1 [容器ID/名称]  (关闭,根据名称或者ID)

docker restart  n1 [容器ID/名称]  (重启,根据名称或者ID)

 

查看当前的容器:

docker ps  (查看已启动容器)

docker ps -a  (查看所有容器)

 

删除容器: 

docker rm n1 [容器ID/名称]  (该删除命令,只能删除没有开启的容器)

docker rm -f n1 [容器ID/名称] (该删除命令,可以强制删除已经开启的容器) 

进入容器:

docker exec -it n1 [容器ID/名称]  bash   

 

退出容器:

退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
如果不想继续运行:按【ctrl+d】或输入exit  ,退出容器并且可能关闭容器。

每篇一获

掌握Linux中部署及安装和使用Docker的技术后,您将获得以下几个方面的收获:

  1. 环境一致性:Docker可以确保无论在开发、测试还是生产环境中,应用运行的环境都是一致的。这可以大大减少因环境差异导致的问题。

  2. 快速部署:使用Docker,您可以快速地部署应用和服务。Docker镜像包含了运行应用所需的所有依赖,因此您只需运行一个命令就可以启动应用。

  3. 资源高效利用:Docker容器比传统的虚拟机更轻量级,占用的资源更少。这意味着您可以在同一台机器上运行更多的容器,提高资源利用率。

  4. 便于迁移:由于Docker容器包含了运行应用所需的所有依赖,因此您可以轻松地将容器迁移到其他机器上运行。

  5. 微服务架构:Docker非常适合微服务架构。您可以将每个服务打包成一个容器,这样每个服务都可以独立地进行扩展和部署。

  6. 持续集成/持续部署:Docker与各种CI/CD工具(如Jenkins)有很好的集成,可以方便地实现自动化的构建、测试和部署。

  7. Linux系统管理能力提升:在学习和使用Docker的过程中,您也会对Linux系统有更深入的理解和操作经验,提升您的系统管理能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 编码与初始化 4.2 适应度函数 4.3 遗传操作 4.4 自适应机制 4.5 终止条件 5.完整程序 1.程序功能描述 基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘…

【AI】搭建Windows Linux子系统(WSL2)CUDA环境

0.准备工作 Windows本机安装CUDA Driver 首先去下载页面下载驱动文件 点击Get CUDA Driver进入下载页面&#xff0c;我看下载页面跟普通驱动下载页面相同&#xff0c;感觉应该不是单独的驱动&#xff0c;只要之前显卡已经安装好了CUDA的驱动&#xff0c;就可以先省略这一步。…

4024A/B/C/D/E/F/G/H/L频谱分析仪

01 4024A/B/C/D/E/F/G/H/L频谱分析仪 产品综述&#xff1a; 4024频谱分析仪系列产品具有工作频段宽、性能指标高、扫描速度快、测试功能多、操作简便等多重优点&#xff0c;性能指标方面具有优良的平均噪声电平、相位噪声以及扫描速度&#xff0c;测量功能方面具有频谱分析、…

NetSuite 收入管理模块与总账的数据一致性检查

收入管理模块是NetSuite的一个艰深功能领域&#xff0c;能够有所实践&#xff0c;知原理懂变化的实施顾问少之又少。很高兴&#xff0c;我们的财务顾问Chris在23年底经历了一次深入的NetSuite收入管理模块的实践&#xff0c;对收入管理模块与总账递延收入和收入数据的一致性检查…

MySQL中order by是怎么工作的?

在如上图中所示的explain的执行结果中&#xff0c;Extra字段中的“Using filesort”表示的就是需要排序&#xff0c;MySQL会给每个线程分配一块内存用于排序&#xff0c;称为sort_buffer。 索引city如上图所示 上述语句的执行流程如下&#xff1a; 1、初始化sort_buffer&…

由于找不到msvcp140.dll无法继续执行代码原因及解决教程分享

在计算机打开软件过程&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“由于找不到msvcp140.dll无法继续执行代码”。这个错误通常发生在使用Microsoft Visual C 2015或更高版本编译的程序运行时。那么&#xff0c;什么是msvcp140.dll文件&#xff1f;为什么会…

竞赛保研 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的行人重识别 该项目较为新颖&#xff0c;适合…

中国社科院大学与美国杜兰大学金融管理硕士项目——熬过寒冬,春日暖阳已不远

在金融领域&#xff0c;寒冬似乎成了无法避免的阶段。然而&#xff0c;对于那些坚守岗位的金融从业者来说&#xff0c;熬过寒冬并非无望。正如冬去春来&#xff0c;只要我们采取明智的策略&#xff0c;迈出坚定的步伐&#xff0c;春日的暖阳已在不远方照耀。社科院与美国杜兰大…

2023检索增强生成技术(RAG)研究进展

一、前言 在过去的一两年里&#xff0c;人工智能领域目睹了检索增强生成技术&#xff08;RAG&#xff09;的迅猛发展&#xff0c;这种技术结合了强大的语言模型与信息检索系统&#xff0c;以期在复杂的问题解决和信息处理任务中提供更加精确和深入的答案。正是这种对前沿科技的…

Android通过Recyclerview实现流式布局自适应列数及高度

调用 FlowAdapter 跟普通recyclerview一样使用 RecyclerView rvLayout holder.getView(R.id.spe_tag_layout); FlowAdapter rvAdapter new FlowAdapter(); FlowLayoutManager flowLayoutManager new FlowLayoutManager(); rvLayout.setLayoutManager(flowLayoutManager); r…

二叉树基础oj练习(单值二叉树、相同的树、二叉树的前序遍历)

讲了这么多数据结构相关的知识(可以看我的数据结构文章专栏): 抓紧刷题巩固一下了 目录 1.单值二叉树 题目描述 思路1 代码1 思路2 代码2 2.相同的树 题目描述 思路 代码 3.二叉树的前序遍历 代码 思路 1.单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCod…

Linux网络编程(一-网络相关知识点)

目录 一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封 三、IP协议 3.1 MAC地址 3.2 IP地址 3.3 MAC地址与IP地址区别 一、网络相关知识简介 互联网通信的本质是数字通信&#xff0c;任何数字通信都离…

Redis命令总结

1、启动Redis服务&#xff0c;登录Redis # 开启redis服务 redis-server redis配置文件路径例子&#xff1a; redis-server redis.windows.conf# 连接redis 【无密码】 redis-cli# 连接redis【有密码】 # 1 先连接再输入密码 redis-cli auth 密码 2、连接时输入 IP址、端口号、…

Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程

这个是篇学习 Handsfree_ros_imu 传感器的博客记录 官方教程链接见&#xff1a; https://docs.taobotics.com/docs/hfi-imu/ 产品功能 IMU 内有 加速度计&#xff0c;陀螺仪&#xff0c;磁力计这些传感器&#xff0c;通过固定 imu 到物体上后&#xff0c;可以获取物体在运动…

力扣LCR 166. 珠宝的最高价值(java 动态规划)

Problem: LCR 166. 珠宝的最高价值 文章目录 解题思路思路解题方法复杂度Code 解题思路 思路 改题目与本站64题实质上是一样的&#xff0c;该题目在64题的基础上将求取最小路径和改成了求取最大路径和。具体实现思路如下&#xff1a; 1.定义一个int类型的二维数组dp大小为给定…

代码随想录第五十五天——判断子序列,不同的子序列

leetcode 392. 判断子序列 题目链接&#xff1a;判断子序列 确定dp数组及下标的含义 dp[i][j]&#xff1a;以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列长度为dp[i][j]确定递推公式 分为两种情况&#xff1a;s[i - 1] 与t[j - 1]相…

一起学习python类的属性装饰器@property

之前文章我们介绍了class的一些通用功能&#xff0c;比如类属性/类方法/实例属性/实例方法等&#xff0c;之前的属性可以直接修改和访问&#xff08;设置私有属性&#xff0c;不能直接访问,可通过对象名._[类名][属性名]的方式访问&#xff09;&#xff0c;没有一些权限的控制逻…

049.Python包和模块_虚拟环境超详细讲解

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

IDC机房服务器搬迁之运行了几年的服务器没关过机,今天关机下架,再上架突然起不来了,怎么快速处理?

环境 戴尔R420 服务器 1U 2台直连存储 4U CentOS 7 问题描述 IDC机房服务器搬迁之运行了几年的服务器没关过机,今天关机下架,再上架突然起不来了,怎么快速处理? 服务器上电开机就出现进入紧急模式 Welcome to emergency mode! After logging in, type “journalctl …

开关电源PFC电路原理详解及matlab仿真

PFC全称“Power Factor Correction”&#xff0c;意为“功率因数校正”。PFC电路即能对功率因数进行校正&#xff0c;或者说能提高功率因数的电路。是开关电源中很常见的电路。 在电学中&#xff0c;功率因数PF指有功功率P&#xff08;单位w&#xff09;与视在功率S&#xff08…