【Docker第一课】docker的基本命令和试启动容器(详细图解)

目录

知识梗概

docker的初步了解

了解docker常用命令

试开启容器(这里演示nginx、python3和mysql)

1、nginx容器的启动

2、python3容器的启动

docker的作用

虚拟机与容器的区别


写在前面:

本专栏你将了解docker一些入门知识,大概有七篇,此篇是第一篇详细的操作和命令在Linux上的实现都会截图,清楚的展示给各位看客,带您零基础了解docker,小编也只是docker爱好者,如有任何问题欢迎留言或私信探讨,期待与您的相关技术栈交流!

注:docker完整思维导图关注留言后可分享给您!

知识梗概

docker的初步了解

Docker是什么?

简单来说,docker是一个开源应容器引擎,它允许开发者将他们的应用以及依赖包打包到一个可以移植到容器中,发布到Linux或者windows这些流行的操作系统机器上。Docker容器完全使用沙箱机制,相互之间不会有任何接口。

Docker的组成部分包括Docker Client客户端、Docker Daemon守护进程、Docker Image镜像和Docker Container容器。Docker的起源可以追溯到PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,其源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。

官方学习网站:Docker: Accelerated Container Application Development

docker是一个容器软件,理解成一个轻量级的虚拟机。将软件装入docker中,docker可以限制该软件使用的cpu、内存等资源;它是一种虚拟化的隔离技术。

说了这么多,接下来我们安装一下docker吧!

先准备一台新的centos7虚拟机(我给了4核8G内存100G磁盘,为docker容器预留足够的空间),然后按照如下官方文档安装docker(把命令输进去就行,虽然是全英文件,但是操作很简单):

安装方法:Install Docker Engine on CentOS | Docker DocsInstall Docker Engine on CentOS | Docker DocsInstall Docker Engine on CentOS | Docker Docs

了解docker常用命令

Docker的常用命令有哪些?

先对一些操作指令稍稍了解,之后也会有演示什么的:

查看docker版本:[root@docker ~]# docker version
查看运行的容器:[root@docker ~]# docker ps
查看容器,包括未运行的:[root@docker ~]# docker ps -a
docker命令帮助:[root@docker ~]# docker --help
查看镜像:[root@docker ~]# docker images
拉取nginx镜像:[root@docker ~]# docker pull nginx
启动一个容器:[root@docker ~]# docker start sc-nginx-1(sc-nginx-1是给nginx容器取的容器名)
关闭一个运行的容器:[root@docker ~]# docker stop sc-nginx-1
删除一个容器:[root@docker ~]# docker rm sc-nginx-1
删除容器:[root@docker ~]# docker rm sc-nginx-1
查询go相关的镜像:[root@docker ~]# docker search go
查看容器启用的日志:[root@docker ~]# docker logs sc-mysql-1
删除镜像(镜像文件的容器要停止以及删掉才能删除他的镜像):[root@docker ~]# docker rmi nginx
查看容器的详细信息:[root@docker ~]# docker inspect sc-nginx-1

以及运行容器就是docker run xxxxxxx;容器之间的文件共享:docker cp xxxxxx;
如果有一定Linux基础的话,这些命令都很好懂的。

试开启容器(这里演示nginx、python3和mysql)

已经知道这么多东西了,那容器到底是怎么运行的呢?

下面我准备演示一下启动nginx和mysql的容器!

1、nginx容器的启动

在虚拟机上执行如下操作:

拉取nginx镜像:[root@docker ~]# docker pull nginx
查看镜像:[root@docker ~]# docker images设置nginx的容器:[root@docker ~]# docker run --name sc-nginx-1 -d -p 8080:80 --cpu-shares 100 --cpus 1 --cpuset-cpus 0 -m 10000000 nginx
查看运行的容器:[root@docker ~]# docker ps

此时就可以看到有一个叫sc-nginx-1的容器运行起来了。

这些命令让我们产生了一些疑问:

镜像是啥?跟容器有什么关系呢?运行容器时docker run命令后面的选项都是什么意思?

Docker镜像是Docker容器的构建块,是一种轻量级、独立的可执行软件包。它包含了运行应用程序所需的所有代码、运行时、库、环境变量、配置参数以及依赖项等。把这个镜像放到docker中就可以运行起来。镜像可以被视为一个只读的模板,用于创建容器实例。在Docker中,镜像可以用来创建容器,并作为Docker运行容器的前提。

镜像与容器的关系:镜像里是程序的源代码(二进制程序)-->静态;

容器:是运行镜像的地方-->动态的;

一旦容器运行起来后,在操作系统里就对应产生一个进程;

杀死容器对应的进程,容器就停止运行了:

对于docker run的那条指令的意思在此解读一下:

[root@docker ~]# docker run --name sc-nginx-1 -d -p 8080:80 --cpu-shares 100 --cpus 1 --cpuset-cpus 0 -m 10000000 nginx

--name:指定容器名字,一个nginx镜像可以启动多个nginx容器,但是容器名和端口不能重复。如果还要再启动一个nginx容器,就可以叫sc-nginx-2、sc-nginx-3……你就可以通过这个名字来引用和管理这个容器了,而不是使用自动生成的容器ID。

-d:容器在后台运行

-p:将容器的某个端口映射到宿主机的某个端口,这里将容器的80端口映射到宿主机的8080端口,这样,任何发送到宿主机 8080 端口的流量都会被转发到容器内的 80 端口。

--cpu-shares:这个选项用于设置CPU共享权重。在Docker中,--cpu-shares 并不直接限制容器可以使用的CPU百分比,而是设置了一个权重,用于在多个容器间分配CPU资源。

--cpus:这个选项用于限制容器可以使用的CPU核心数,这里可以用1个。

--cpuset-cpus:这个选项用于限制容器只能在特定的CPU核心上运行,这里指定名为“cpu0”这块cpu。

-m:这个选项用于限制容器可以使用的内存量。在这个例子中,容器被限制为只能使用10MB(即10,000,000字节)的内存。

查看容器的详细信息:[root@docker ~]# docker inspect sc-nginx-1
查看容器状态:[root@docker ~]# docker stats

访问宿主机的地址,指定8080端口,就能看到运行成功的nginx:

2、python3容器的启动

[root@docker ~]# docker pull python:3
[root@docker ~]# docker images
[root@docker ~]# docker run -it --rm --name sc-python3-1 python:3
#(这里的--rm表示,当我们退出容器时,自动删除容器)
#(-it表示进入一个容器时,开启一个终端,能进行交互)

运行效果如下:

docker的作用

启动了这么多容器,我们可以看到docker的很多优点

最明显的一点就是降本升效。Docker完全打破了我们原有的安装软件的方法,简化了安装步骤;其次就是docker可以控制分配给容器的资源,所以可以提高资源的利用率;Docker容器应用直接运行于宿主内核,无需启动完整的操作系统,因此大大节约了开发、测试和部署的时间……

随着了解的深入,我们会认识到docker的更多优点。

使用Docker安装软件和直接使用操作系统安装软件存在显著的区别

1、隔离性:Docker容器提供了隔离的运行环境,这意味着每个容器都拥有自己独立的运行环境和依赖项。这种隔离性有助于防止不同应用程序之间的版本冲突和其他潜在问题。相比之下,直接在操作系统上安装软件时,不同软件可能会共享系统资源,并可能产生依赖冲突。

2、管理和部署:使用Docker可以更轻松地管理和部署多个服务。

3、版本控制:通过Docker镜像,你可以轻松控制服务的版本。你可以选择特定版本的nginx或MySQL镜像来开启容器,并在需要时方便地升级或回退。

4、资源占用:Docker容器相对于传统虚拟机更为轻量级,因为它们共享主机系统的内核(这一点后面镜像制作时会讲)。这意味着Docker容器在资源占用方面更加高效,启动速度也更快。而直接在操作系统上安装软件时,可能会占用更多的系统资源,并且启动速度可能会较慢。

5、可移植性:Docker容器打包了应用程序及其所有依赖项,使其在任何支持Docker的环境中运行一致。这使得从开发到生产环境的迁移变得更加简单和高效。而直接在操作系统上安装的软件可能受到特定操作系统和配置的限制,因此在不同环境之间的迁移可能会更加困难。

6、数据备份和迁移:使用Docker进行数据备份和迁移更加方便和强大。你可以轻松地将Docker容器和镜像导出为文件(之后镜像导入导出也会演示),并在需要时将其导入到其他环境中。而直接在操作系统上安装的软件可能需要更复杂的步骤来进行数据备份和迁移。

稍微提一下容器技术:

之后对这些会有更深刻的理解。

虚拟机与容器的区别

容器是一个软件运行的标准单元,打包好代码和它依赖的库快速运行在该单元里;
容器和虚拟机都要安装在硬件系统上;但是虚拟机的封装结构更复杂,安全性更高,隔离性更强;
容器的启动速度更快,资源消耗也更少;容器公用宿主机的内核,资源可控;
虚拟机的镜像比较大,容器的镜像小;

两者在结构上的区别:

知乎上看到一个总结比较完善的图:

此次分享就到这里,如有问题,欢迎留言;关注可分享docker思维导图

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

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

相关文章

如何使用 ArcGIS Pro 查找小区最近的地铁站

学习 GIS 除了可以用在工作上之外,还可以将其运用到生活之中,比如查找距离小区最近的地铁站,这里为大家介绍一下查找的方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数据,除了POI数据…

a-table 控制列的展示和隐藏

一、业务场景: 最近在使用 Antd-vue 组件库的时候,a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路,为大家整理了一下,粘走可以直接用的那种 二、具体实现步骤: 1.在需要显示与隐藏的列增加一…

Git客户端(TortoiseGit)使用详解

1.概述 使用TortoiseGit比直接使用git 客户端和命令实现代码版本管理更为方便,本文根据实际使用情况作一些记录,特别是对于解决冲突的处理。 2.Git安装与配置 下载 Git - Downloads, 可参考Git安装步骤完成Git的安装与配置。 3.TortoiseG…

python学习笔记B-20:序列实战--处理千年虫

将2位数表达的年份,转换为用4位数表达: print("将列表中的2位数年份转换为4位数年份") lst[88,89,90,00,99] print(lst) for index in range(len(lst)):if len(str(lst[index]))2:lst[index] 1900int(lst[index])elif len(str(lst[index]))1…

收单外包机构备案情况分析,广东备案机构遥遥领先

孟凡富 4月30日,中国支付清算协会公示了最新一批收单外包服务备案机构,较上期增加了689家。其中,新增聚合支付技术服务备案机构达6家。截至4月末,备案的收单外包服务机构总数为27714家,同时取消了330家机构的备案资格&…

spring-security 学习笔记一 --- 基于默认配置

1.前言 本文主要讲解 spring-security 在不做任何配置情况下,它的启动流程和认证过程。 1. 准备工作 这里是基于springboot 2.2.5版本对应 spring-security 5.2.2版本演示的 (按我下面导入即可,版本是它自己匹配的) 引入依赖 &…

SpringBoot-@Transactional注解失效

Transactional注解失效 Transactional失效场景 以下是一些常见导致Transactional注解失效的场景,配合相应的Java代码演示: 1、方法修饰符非公开(非public) Transactional注解失效的原因在于Spring事务管理器如何实现对事务的代…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳: 1)CBOW模型: 2c个向量是相加,而不是拼接。 2)CBOW模型中的哈夫曼树: 从root开始,向左为1,向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

Redis基本數據結構 ― String

Redis基本數據結構 ― String 介紹常用命令範例1. 為字串鍵設值/取得字串鍵的值2. 查看字串鍵的過期時間3. 如何為key設置時間?4. 如何刪除指定key?5. 如何增加value的值?6. 獲取value值的長度 介紹 字串鍵是Redis中最基本的鍵值對類型,這種類型的鍵值對會在數據…

Spring - 10 ( 9000 字 Spring 入门级教程 )

一:MyBatis 进阶 动态 SQL 是 Mybatis 的强大特性之⼀,能够完成不同条件下不同的 sql 拼接。 1.1 if 标签 在注册用户的时候,可能会有这样⼀个问题,如下图所示: 注册分为两种字段:必填字段和非必填字段&…

Vue ui 创建vue项目,详细使用攻略。

1.安装及启动 1.1 Vue ui 使用前提是全局安装vue.js 命令如下 npm install vue -g 1.2 安装过Vue.js 之后 随便在自己系统的一个地方打开命令面板 1.3 使用命令启动vue ui面板创建项目 vue ui 如图运行后显示这种就是启动成功,成功之后会弹出页面或者直接访问你的…

伦敦金的交易时间段都适合投资吗?

是所有的交易时间段都适合投资。首先,让我们了解伦敦金的交易时间。伦敦金市场的交易时间分为两个主要时段:亚洲盘和欧美盘。亚洲盘通常在北京时间早晨6点至下午5点半左右,而欧美盘则从北京时间晚上8点半开始,一直到次日早晨4点半…

痉挛性斜颈患者早上运动还是下午运动更合适?选对了让治疗更简单!【北京仁爱堂】

对于痉挛性斜颈患者来说,选择合适的运动时间对于治疗的效果和舒适度至关重要。那么,痉挛性斜颈患者早上运动还是下午运动更合适呢?本文将从多个角度对此进行分析,帮助患者找到最适合自己的运动时间。 首先,我们需要了…

特征提取(Feature Extraction)常见统计特征笔记(三)

统计特征是描述数据集中值的一组量,通常用于了解数据的分布、集中趋势和变异程度。常见的统计特征包括均值、中位数、众数、标准差、方差等。下面会详细解释每个统计特征,并给出相应的Python代码。 1、均值(Mean):所有…

Python的使用

1、打印:print(‘hello’) 2、Python的除法是数学意义上的除法 print(2/3) 输出:0.6666... 3、a18 a‘hello’ print(a) 可以直接输出 4、**2 表示2的平方 5、打印类型 print(type&am…

答案自在你心——不求事事皆如愿,只求件件都无悔

时光荏苒,弹指间,似如梦初醒般又迎来了大学的第二个五一假期。多数人看来,又是一个千载难逢的度假时光,于我而言,心里却一直紧绷一根迟迟难以松弛的弦。也许是习惯了平常忙忙碌碌的生活节奏,突然停下来&…

linux下载压缩包

比如我要下载的压缩包地址为: http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/cocostuff-10k-v1.1.zip 1.创建文件夹并切换到这个目录下 2.用wget获取压缩包 压缩包下好了 3.解压 如果是 tar.gz包解压 tar -zxvf 也可以解压到具体的目录…

手撸Mybatis(一)——代理mapper

引言 最近刚写完毕设,闲来无事,看到网上有一个手撸Mybatis的教程,于是想自己实现一个简易版的Mybatis。 本专栏的源码:https://gitee.com/dhi-chen-xiaoyang/yang-mybatis。 创建简单的映射器代理工厂 在使用mybatis的时候&…

Python语言在地球科学中地理、气象、气候变化、水文、生态、传感器等数据可视化到常见数据分析方法的使用

Python是功能强大、免费、开源,实现面向对象的编程语言,Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台(x86和arm),Python简洁的语法和对动态输入的支持,再加上解释性语言的本质&…

doxygen 辅助阅读代码的神器

简介 Doxygen是一个文档生成工具,主要用于编写编程语言的软件文档。它最初是为C设计的,但后来增加了对C、C#、Java、Objective-C、Python、IDL(在某些情况下还有PHP、C#和D)的支持。Doxygen可以从一组带有文档注释的源代码文件中…