【Docker】安装及相关的命令

目录

一 Docker简介

1.1 是什么

1.2 优缺点

1.3 应用场景

1.4 安装

二 命令

2.1 Docker基本命令

2.2 Docker镜像命令

 2.3 Docker容器命令


一 Docker简介

1.1 是什么

      Docker是一个开源的应用容器引擎,它基于Go语言实现,并利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,实现应用的“一次封装,到处运行”的目的,实在不理解,可以把它当成一个VM,在VM中又安装了一个VM第二个的这个VM就是Docker

生活列子来熟悉Docker

想象一下,你想要做一顿晚餐,比如意大利面。为了做这顿饭,你需要准备面条、番茄酱、洋葱、大蒜和一些调料。在传统的方式中,你可能需要分别购买这些食材,然后在厨房里手动准备它们。

现在,如果我们将这个过程与Docker进行比较:

  1. Docker主机:这就像你的厨房。它提供了制作意大利面所需的基础设施和环境。
  2. Docker镜像:这就像是食谱或预制的意大利面配料包。它包含了制作意大利面所需的所有食材和步骤。
  3. Docker容器:这就像是按照食谱实际制作出来的意大利面。一旦你有了镜像(食谱),你就可以创建一个容器(开始做饭),然后在这个容器里实际制作意大利面。
  4. Docker仓库:这就像超市的货架,上面摆放着各种各样的食谱或配料包。你可以从仓库中选择你想要的镜像,然后将其下载到你的Docker主机上。

使用该Docker好处之一,就是你可以很容易地分享你的“意大利面”配方(镜像)。例如,你可以将你的镜像上传到Docker仓库,然后你的朋友或家人就可以很容易地下载并在他们自己的Docker主机上制作同样的意大利面

1.2 优缺点

优点

  1. 轻量级和高效:Docker容器非常轻量级,因为它们共享主机操作系统内核,并且只包含应用程序及其依赖项。这使得容器启动速度快,资源占用少,非常适合在资源有限的环境中运行。

  2. 可移植性强Docker容器可以在任何能运行Docker的操作系统上运行,无论是Linux还是Windows。这使得应用程序在不同环境之间的迁移变得非常容易

  3. 版本控制和回滚:Docker使用镜像来创建容器,每个镜像都有一个唯一的标识符。这使得应用程序的版本控制变得简单明了,同时也方便进行回滚操作。

  4. 促进开发运维协同:Docker简化了应用程序的开发、测试和部署过程,使开发者和运维人员能够更高效地协同工作。

缺点:

  1. 学习曲线陡峭:Docker有一定的技术门槛,需要掌握一定的新概念和技术。对于初学者来说,可能需要一些时间来熟悉Docker的使用。

  2. 安全性问题:虽然Docker提供了多种安全机制来保护容器,但由于容器之间共享主机操作系统内核,因此仍然存在一些安全风险。例如,如果一个容器被攻击并成功突破了隔离层,它可能会影响到其他容器。

  3. 网络和存储功能有限:Docker在网络和存储方面的功能相对有限,可能无法满足一些复杂需求。例如,Docker的默认网络模式可能无法满足一些高级网络拓扑需求。

  4. 部分应用可能不兼容:尽管Docker支持大多数应用程序,但仍有部分应用程序可能无法或难以在Docker容器中运行。这可能需要额外的适配或修改工作。

  5. 大规模部署时的复杂性:当需要在大规模环境中部署大量容器时,Docker的监控、管理和故障排除可能会变得复杂。这可能需要额外的工具和技术支持。

1.3 应用场景

  1. 面向开发人员的Web应用自动化打包和发布:在没有Docker之前,开发、测试、生产环境可能不一致,导致文件配置上的不一致。使用Docker后,容器内的程序端口一致,而容器对外暴露的端口可能不同,但不影响程序的交付和运行,保证了环境一致性,并实现了快速部署。
  2. 面向运维人员的运维成本降低:部署程序时,搭建运行环境和解决环境依赖是非常耗时的。Docker通过镜像机制,将代码和环境直接打包成镜像,上传到容器即可启动,大大节约了部署时间。
  3. 面向企业的PaaS层实现:在一台物理机上可以部署多个轻量级的Docker容器,大大提高了运行效率。
  4. 微服务架构:在微服务架构中,应用程序被拆分成多个小型、独立的服务。Docker可以用来容器化这些服务,使它们可以独立部署和扩展。
  5. 应用迁移和移植:Docker可以帮助开发者轻松地将应用从开发环境迁移到生产环境,甚至在不同云服务提供商之间迁移,因为Docker容器提供了环境一致性。
  6. 隔离应用:Docker容器提供应用级别的隔离,使不同的应用可以在同一台机器上运行,互不干扰。
  7. 整合服务器:通过Docker,可以将多个服务整合到少数几台高性能服务器上,提高资源利用率,简化系统维护。
  8. 云计算和容器云:Docker容器可以在云环境中快速部署,无论是公有云、私有云还是混合云,都可以实现资源的灵活分配和自动化管理。

1.4 安装

#查看内核
uname -r       
#更新yum源为最新,时间大致要6分钟
yum update -y        
#安装Docker所需要的工具包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源


yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#下载安装Docker
yum install docker-ce docker-ce-cli containerd.io -y -y
#启动Docker并且设置开机自启动
systemctl start docker
systemctl enable docker

#检测Docker是否安装成功
docker version

执行上方命令安装无误的话,差不多就成功了

进入docker:cd /etc/docker

配置我们的镜像,先进入阿里云官方: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

如果没有账户的话,先注册再登入,再回到docker文件下

输入编辑命令:vim daemon.json  

将阿里源进行配置(下图括号里面的)

使用命令进行生效

systemctl daemon-reload
systemctl restart docker
 

这时候,就算安装好啦!

二 命令

2.1 Docker基本命令

下方是有关于docker的基本命令,可自行操作

systemctl start docker      (启动Docker)

systemctl stop docker       (停止Docker)

systemctl restart docker     (重启Docker)

systemctl enable docker      (开机自启动Docker)

docker info        (查看Dokcer概要信息)

docker --help    (查看Docker帮助文档)

docker version    (查看Docker的版本信息)

2.2 Docker镜像命令

下方图拉取(下载)mysql  

命令:docker pull mysql

 查看当前服务器已下载的:docker images

删除:docker rmi IMAGE ID或名称       

强制删除:docker rmi -f IMAGE ID或名称     

 2.3 Docker容器命令

为了测试,在Linux的Centos7中再安装一个Centos7

命令:docker pull centos:7

这时候下载的centos7为一个容器

我们可以去启动它

创建一个容器并进入该容器: docker run -it --name mycentos02 IMAGE ID

解释:

  1. docker run: 这是Docker命令的基础,用于从镜像启动新容器。

-it: 这是两个标志的组合。

  1. -i 或 --interactive: 保持容器的标准输入(STDIN)开启,即使不连接到容器。
  2. -t 或 --tty: 为容器分配一个伪终端(pseudo-TTY),通常用于交互式会话
  3. --name mycentos02: 这个标志用于给新创建的容器指定一个名称。在这个例子中,容器的名称是mycentos02。如果不指定这个标志,Docker会自动为容器生成一个名称。

  4. IMAGE ID: 这是你想要从中创建容器的Docker镜像的标识符。通常,你会使用docker images命令来查看可用的镜像及其ID,然后选择你想要使用的镜像的ID

综合起来,docker run -it --name mycentos02 IMAGE ID 命令会创建一个名为mycentos02的新容器,该容器基于指定的镜像ID,并且具有交互性和伪终端。一旦容器启动,你就可以通过控制台与容器中的进程进行交互(切换版本),如下图

创建容器但不进入容器:docker run -di --name mycentos03 IMAGE ID

退出不停止容器:Ctrl+p+q

退出并停止容器:exit

查看活的容器:docker ps

查看全部的容器:docker ps -a

强制删除一个运行的容器:docker rm -f IMAGE ID或名称

重启容器:docker restart mycontainer

查看容器日志:cd /var/lib/docker/containers

最后得出,相同的两个Centos7容器不同的文件,存着一种隔离的状态,如下

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

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

相关文章

【QT+QGIS跨平台编译】之五十四:【QGIS_CORE跨平台编译】—【qgssqlstatementlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

电机控制----电机极对数的作用

电机控制----电机极对数的作用 1. 电机极对数的概念和含义 电机的极对数是指电机运动部件磁场南、北极之间相邻的个数。简单来说,电机极对数就是电机磁极的数量。一般情况下,电机极对数越多,电机的转速越慢,但是转矩越大&#xf…

状态机2——————

1.原理 2.代码 2.1 complex_fsm.v module complex_fsm(input wire sys_clk ,input wire sys_rst_n ,input wire pi_money_half ,input wire pi_money_one ,output reg po_cola ,output reg po_money );parameter IDLE 5b00001,HALF 5b00010,ONE 5b00100…

算法竞赛实用板子

一、声明 自用版参考acwing&#xff0c;致力于实用、好用&#xff0c;板子中有个人理解&#xff0c;持续更新。 二、开板 1.快排 void quick_sort(int q[],int l,int r) {if(l>r)return; //出口int il-1,jr1,xq[lr>>1]; //分治方法while(i<j){do i;w…

k8s(6)

目录 一.kubectl 命令行管理K8S 陈述式资源管理方式&#xff08;可理解成使用一条kubectl命令及其参数选项来实现资源对象的管理操作&#xff09; service的4的基本类型&#xff1a; service的端口 应用发布策略&#xff1a; 声明式资源管理方式&#xff08;可理解成使用…

spring boot 自定义注解封装(@RequestLimit注解)

描述&#xff1a; RequestLimit(time3)防重复点击&#xff0c;限制单个会话的请求频率。但是 RequestLimit注解中的参数不能传常量。 例如&#xff1a;不能通过获取application.yml文件中的配置信息&#xff0c;去动态配置限制时间&#xff0c;所以就对RequestLimit注解封装。 …

Go语言反射(reflect)

反射是应用程序检查其所拥有的结构&#xff0c;尤其是类型的一种能。每种语言的反射模型都不同&#xff0c;并且有些语言根本不支持反射。Go语言实现了反射&#xff0c;反射机制就是在运行时动态调用对象的方法和属性&#xff0c;即可从运行时态的示例对象反求其编码阶段的定义…

LeetCode_21_简单_合并两个有序链表

文章目录 1. 题目2. 思路及代码实现&#xff08;Python&#xff09;2.1 递归2.2 迭代 1. 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a; l 1 [ 1 , 2 , 4 ] , l 2 [ 1 , 3 …

MongoDB聚合运算符:$cmp

文章目录 语法用法举例 $cmp聚合运算符返回连个值的比较结果。 语法 { $cmp: [ <expression1>, <expression2> ] }表达式可以是任何类型&#xff0c;使用标准的BSON比较顺序对不同类型的值进行比较。 用法 $cmp对两个值进行比较&#xff0c;返回&#xff1a; …

SQL注入漏洞解析-less-8(布尔盲注)

我们来看一下第八关 当我们进行尝试时&#xff0c;他只有You are in...........或者没有显示。 他只有对和错显示&#xff0c;那我们只能用对或者错误来猜他这个数据库 ?id1%27%20and%20ascii(substr(database(),1,1))>114-- ?id1%27%20and%20ascii(substr(database(),1,…

[WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%

ForgeUI的github主页地址:https://github.com/lllyasviel/stable-diffusion-webui-forge Stable Diffusion WebUI Forge 是一个基于Stable Diffusion WebUI(基于Gradio)的平台,可简化开发、优化资源管理并加快推理速度。 “Forge”这个名字的灵感来自于“Minecraft Forge”…

Spring MVC HandlerMapping原理解析

在Spring MVC框架中&#xff0c;HandlerMapping是一个核心组件&#xff0c;负责将客户端的请求映射到相应的处理器&#xff08;Handler&#xff09;。理解HandlerMapping的原理对于掌握Spring MVC的请求处理机制至关重要。本文将对HandlerMapping的原理进行详细分析&#xff0c…

【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本 (2)

文章目录 1.基本查询回顾2.多表查询3.自连接4.子查询 4.1单行子查询4.2多行子查询4.3多列子查询4.4在from子句中使用子查询4.5合并查询 4.5.1 union4.5.2 union all 1.基本查询回顾 表的内容如下&#xff1a; mysql> select * from emp; ----------------------------…

vue项目导出excel ,文件过大导致请求超时的处理方法

一、因为文件过大&#xff0c;请求时间较长&#xff0c;就会产生请求超时的情况&#xff0c;处理方式是可以分为三个接口&#xff0c;接口1用来获取id值&#xff0c;接口2利用id值发起请求&#xff0c;询问是否准备好下载&#xff0c;如果没准备好&#xff0c;则没隔一秒再次发…

便携式森林消防灭火泵:森林安全的守护者

在自然环境中&#xff0c;森林是地球生态系统的重要组成部分&#xff0c;它们为我们提供氧气、净化空气、防止土壤侵蚀等重要功能。然而&#xff0c;当森林发生火灾时&#xff0c;它们也会成为我们的噩梦。火势蔓延迅速&#xff0c;难以控制&#xff0c;对森林和生态环境造成严…

HTML5 CSS3 提高

一&#xff0c;HTML5的新特性 这些新特性都有兼容性问题&#xff0c;基本是IE9以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。 1.1新增语义化标签 注意&#xff1a; 1这种语义化标签主要是针对搜索引擎的 2这些新标签在页面…

FL Studio 21 Mac汉化免费版 附安装教程

FL Studio 21 Mac是Mac系统中的一款水果音乐编辑软件&#xff0c;提供多种插件&#xff0c;包括采样器、合成器和效果器&#xff0c;可编辑不同风格的音乐作品&#xff0c;Pattern/Song双模式&#xff0c;可兼容第三方插件和音效包&#xff0c;为您的创意插上翅膀。FL Studio 2…

尚硅谷webpack5笔记base部分

base 基本使用 Webpack 是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 我们将 Webpack 输出的文件叫做 bundle。 功能介绍 Webpack …

textbox跨线程写入

实现实例1 实现效果 跨线程实现 // 委托&#xff0c;用于定义在UI线程上执行的方法签名 //public delegate void SetTextCallback(string text);public void textBoxText(string text){// 检查调用线程是否是创建控件的线程 if (textBox1.InvokeRequired){// 如果不是&#…

Adobe illustrator CEP插件调试

1.创建插件CEP面板&#xff0c;可以参考&#xff1a;http://blog.nullice.com/%E6%8A%80%E6%9C%AF/CEP-%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/%E6%8A%80%E6%9C%AF-CEP-%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B-Adobe-CEP-%E6%89%A9%E5%B1%95%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8…