docker的学习(一):docker的基本概念和命令

简介

docker的学习,基本概念,以及镜像命令和容器命令的使用

docker

docker的基本概念

一次镜像,处处运行。
在部署程序的过程中,往往是很繁琐的,要保证运行的环境,软件的版本,配置文件,第三方依赖等等都要一致,docker就是解决系统的平滑移植,方便做持续集成和整体发布的容器虚拟化技术。
它是通过将程序和程序所需的系统环境都打包来达到跨平台的无缝运作的。

虚拟机和容器对比

虚拟机

虚拟机就是一种带环境安装解决方案,它在原来的操作系统上虚拟出各种硬件,然后在这些硬件的基础上安装别的操作系统,在另一种操作系统上安装部署各种软件。
缺点:

  • 占用资源多
  • 冗余步骤多
  • 启动慢
docker

docker容器是在操作系统上实现虚拟化,不需要模拟一个完整的操作系统,而是对进程进行隔离,只需要软件工作所需的库资源和设置。直接使用本地的操作系统,容器内没有自己的内核,也没有硬件的虚拟。每个容器之间相互隔离的,每个容器都有自己的文件系统,也即容器之间的进程不会相互影响。
优点:

  • 启动速度快
  • 占用体积小

docker的作用

  • 更快速的应用交付和部署
  • 更便捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算资源利用

docker的基本组成

  • 镜像
  • 容器
  • 仓库
镜像

docker镜像是一个只读的模版,可以用来创建docker容器,并且可以创建多个,相当于Java中的类模版

容器

独立运行的一个或一组应用,应用运行在容器中,即容器包含类似于一个虚拟化的运行环境和它里面运行的应用。每个容器都是相互隔离的,保证安全的。它可以被启动,开始,停止,删除。相当于Java中的类对象。

仓库

集中存放镜像文件的地方。分为公开仓库和私有仓库。

docker工作架构

docker是一个client-server结构系统,主要工作的就是docker守护进程,运行在server端,通过socket接收client端的命令管理运行在server端的容器。

docker hello world

启动docker:systemctl start docker
可以使用 ps -ef | grep docker 查看docker是否启动成功
运行:docker run hello-world,如果没有hello-world,docker会去仓库下载镜像然后运行。
在这里插入图片描述

docker常用命令

帮助启动类命令:
  • systemctl start docker:启动docker
  • systemctl stop docker:停止docker
  • systemctl restart docker:重启docker
  • systemctl status docker:docker的状态
  • systemctl enable docker:每次linux开机都启动docker
  • docker info :docker的概要信息
  • docker (具体命令) --help:命令的帮助文档
镜像命令
docker images

docker images:列出本地主机上的镜像
在这里插入图片描述
解析

  • repository:镜像源
  • tag:镜像的版本号
  • image id:镜像的id
  • created:镜像的创建时间
  • size:镜像的大小
docker search

docker search -- limit 3 redis:查找排名前三的redis镜像
在这里插入图片描述

解析:

  • name:镜像的名称
  • description:镜像的说明
  • starts:镜像的点赞数
  • official:是否是官方的
  • automated:是否是自动构建的
docker pull

docker pull redis:拉取redis的镜像,可以加上版本号拉取指定版本,不加是拉取最新版的。
在这里插入图片描述

docker system df

docker system df:查看镜像、容器、数据卷,构建缓存所占空间
在这里插入图片描述

docker rmi

docker rmi -f 镜像名字/id:强制删除镜像,可以用名字和id指定

docker rmi -f hello-world

在这里插入图片描述
docker rmi -f a b c:可以同时删除多个镜像
docker rmi -f $(docker images -qa):删除全部的镜像

容器命令
docker run

docker run 参数 镜像名:启动容器
参数:

  • - - name指定容器名字
  • -d:后台运行容器
  • -i:以交互模式运行容器
  • -t:为容器重新分配一个伪输入终端
  • -P:随机端口映射
  • -p:指定端口映射
docker ps

docker ps:显示所有正在运行的容器
参数:

  • -a:当前正在运行的和历史上运行过的
  • -l:最近创建的容器
  • -n:加数字可以显示个数
  • -q:只显示容器编号
退出容器

方式一:exit,退出容器会停止
方式二:ctrl+p+q,退出但容器不停止

docker start

docker start 容器id或容器名:启动已经停止的容器

docker restart

docker restart 容器id或容器名:重新启动容器

docker stop

docker stop 容器id或容器名:停止容器

docker kill

docker kill 容器id或容器名:强制停止容器

docker rm

docker rm 容器id:删除已经停止的容器

启动守护式容器

docker run -d 容器名:启动容器的后台运行模式
后台运行模式必须要有一个进程,不然会自动退出
docker run -d redis,后台运行模式启动redis容器。
在这里插入图片描述

启动交互式容器

docker run -it 容器名/容器id:启动交互式的容器,也即有个等待输入的终端交互,
在这里插入图片描述

docker logs

docker logs 容器id:查看容器的日志
在这里插入图片描述

docker top

docker top 容器id:查看容器运行的进程
在这里插入图片描述

docker inspect

docker inspect 容器id:查看容器内部细节
在这里插入图片描述

docker exec

docker exec -it 容器id /bin/bash:重新进入容器(后台运行模式的容器)

 docker exec -it f1df1159515f /bin/bash

进入到了redis容器里面
在这里插入图片描述
可以进行redis操作了
在这里插入图片描述

docker attach

docker attach 容器id:也是进入docker容器
和exec的区别是:
attach是直接进入容器启动命令的终端,不会启动新的进程,使用exit退出的时候,会导致容器停止。
exec是在容器中打开新的终端,并且可以启动新的进程,使用exit退出的时候不会导致容器停止
一般来说,还是使用exec比较多的。

docker cp

docker cp 容器id:容器内路径 主机路径:可以把容器中的文件复制到主机中,这样子就不用担心容器删了,里面的内容也不见了。

容器的导入导出

docker cp只是把一个文件导出到主机中
docker export 容器id>文件名.tar :可以把容器的内容导出作为一个tar归档文件,相当于把整个容器都备份了。

cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号:可以根据这个文件名.tar创建一个新的镜像,运行这个镜像得到的容器就是之前导出的容器,里面的内容都是有的。镜像用户/镜像名:镜像版本号是自己取的。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MF173:将多个工作表转换成PDF文件

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

5.java操作RabbitMQ-简单队列

1.引入依赖 <!--rabbitmq依赖客户端--> <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId> </dependency> 操作文件的依赖 <!--操作文件流的一个依赖--> <dependency><groupId>c…

CH01_WPF概述

第1章&#xff1a;WPF概述 本章目标 了解Windows图形演化了解WPF高级API了解分辨率无关性概念了解WPF体系结构了解WPF 4.5 WPF概述 ​ 欢迎使用 Windows Presentation Foundation (WPF) 桌面指南&#xff0c;这是一个与分辨率无关的 UI 框架&#xff0c;使用基于矢量的呈现引…

【STM32】TIM定时中断(江科大)

1.定时器最基本功能&#xff1a;定时触发中断 2.定时器就是一个计数器&#xff0c;当这个计数器的输入是一个准确可靠的基准时钟的时候&#xff0c;它在对这个基准时钟进行计数的过程&#xff0c;实际上就是计时的过程&#xff08;比如在STM32中&#xff0c;定时器的基准时钟一…

verilog实现ram16*8 (vivado)

module ram_16x2 (input clk, // 时钟信号input we, // 写使能input en, // 使能信号input [3:0] addr, // 地址线input [1:0] datain, // 输入数据线output reg [1:0] dataout // 输出数据线 );// 定义存储器数组reg [1:0] mem [15:0];always (posedge…

JAVA基础:运用分包思想编写汽车管理系统

目录 前言 分包 主界面 添加页面 service层 domain层 查看界面 总结 前言 在编写Java业务的时候我们应该充分运用分包思想将不同功能的类放在不同的包里&#xff0c;如果我们将所有的类都放在同一个包中&#xff0c;以后维护起来也会很麻烦。我们今天就要用这种思想编写…

前端组件化探索与实践:Vue自定义暂无数据组件的开发与应用

摘要 随着前端开发技术的不断进步&#xff0c;组件化开发已成为提升开发效率、降低维护成本的关键手段。本文旨在通过介绍一款Vue自定义暂无数据组件的开发与实践&#xff0c;深入探讨前端组件化开发的重要性、优势及其在实际项目中的应用。 一、引言 在前端开发中&#xff0…

【杰理蓝牙开发】AC695x 按键 I/O key 互推接法接口分析

本文主要记录 杰理蓝牙AC695x 按键I/O key 互推接法接口分析 【杰理蓝牙开发】AC695x 按键 I/O key 互推接法接口分析 0. 个人简介 && 授权须知1. IOKEY 使用硬件设计1.1 一个按键接一个 IO1.1 一个按键接两个 IO2. IOKEY 【互推】接法原理分析2.1 定义按键的三个属性2…

味蕾盛宴:红酒的丰富口感与不同的风味

在繁华的都市中&#xff0c;总有那么一些瞬间&#xff0c;我们希望用味蕾去探寻世界的美好。而红酒&#xff0c;便是这场味蕾盛宴中的一位优雅舞者&#xff0c;以其丰富的口感和不同的风味&#xff0c;为我们带来一场视觉与味觉的双重享受。今天&#xff0c;就让我们一起走进红…

Python环境下的JD京东平台商品SKU数据批量采集分析

本教程内容旨在帮助没有基础的同学快速掌握 numpy 的常用功能&#xff0c;保证日常绝大多数场景的使用。可作为机器学习或深度学习的先修课程&#xff0c;也可作为快速备查手册。 值得一提的是&#xff0c;深度学习的各大框架很多 API 和 numpy 也是一脉相承的哦&#xff0c;可…

Qt第十二章 样式表

样式表 文章目录 样式表1.样式表盒子模型 2.选择器选择器类型伪状态选择器Pseudo-State 3.控件示例4继承自QWidget的类&#xff0c;设置qss样式表没有效果&#xff0c;需要重写paintEvent 1.样式表 盒子模型 2.选择器 样式表语法&#xff0c;选择器{属性1:值;属性2:值;}如果只…

链表(4) ----跳表

跳表&#xff08;Skip List&#xff09;是一种随机化的数据结构&#xff0c;用于替代平衡树&#xff08;如 AVL 树或红黑树&#xff09;。它是基于多层链表的&#xff0c;每一层都是上一层的子集。跳表可以提供与平衡树相似的搜索性能&#xff0c;即在最坏情况下&#xff0c;搜…

「AI得贤招聘官」通过首批“AI产业创新场景应用案例”评估

近日&#xff0c;上海近屿智能科技有限公司的「AI得贤招聘官」&#xff0c;经过工业和信息化部工业文化发展中心数字科技中心的严格评估&#xff0c;荣获首批“AI产业创新场景应用案例”。 据官方介绍&#xff0c;为积极推进通用人工智能产业高质量发展&#xff0c;围绕人工智能…

springboot 实体类加注解校验入参数据

导入的是springboot自身的依赖包 import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid;

lua 游戏架构 之 SceneLoad场景加载(二)

设计上 定义 NormalSceneLoad的类&#xff0c;该类继承自BaseSceneLoad。 lua 游戏架构 之 SceneLoad场景加载&#xff08;一&#xff09;-CSDN博客文章浏览阅读48次。设计一个为BaseSceneLoad class&#xff0c;用于处理场景加载的相关操作 &#xff0c;主要作用是提供了一个…

Unity免费领7月开发者周冰雪世界着色器环境包180种冰材质544种预制变体冰天雪地环境效果限时免费领取20240719

7月19号的Unity开发者周限时免费资产更新啦&#xff0c;这次是冰雪材质和环境素材包&#xff0c;质量挺不错。 之前进过捆绑包&#xff0c; 结帐时输入NATUREMANUFACTURE2024优惠券代码即可免费获得。无需购买。 Unity免费领7月开发者周冰雪世界着色器环境包180种冰材质544种…

ubuntu上模拟串口通信

前言 有时候写了一些串口相关的程序&#xff0c;需要调试的时候&#xff0c;又没有硬件&#xff0c;或者需要等其他模块完成才能一起联调。这样搭建环境费时费力&#xff0c;很多问题等到最后联调才发现就已经很晚了。 本文提供一种在ubuntu环境下模拟串口&#xff0c;直接就可…

Python for循环

1.基础格式 for 变量名 in range(数字):循环语句 其中&#xff0c;数字指的是变量名的取值&#xff0c;默认情况下每次循环加一。通常情况下变量名为i。使用break结束当前循环。 例&#xff1a; for i in range(10):print(i) 运行后应会看到输出0到9&#xff08;如下&…

边缘设备使用记录--阿加犀AIBox 6490

边缘设备使用记录--阿加犀AIBox 6490 设备介绍设备连接glog && gflagsonnx2tfliteAidLite SDK for C模型输入输出的shape执行推断 OpenCV使用 设备介绍 阿加犀AIBox 6490是一款基于高通QCS6490平台的高性价比智能边缘计算终端&#xff0c;具有14TOPS AI算力&#xff0…

【机器学习】使用Python的dlib库实现人脸识别技术

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、传统人脸识别技术1. 基于几何特征的方法2. 基于模板匹配的方法3. 基于统计学习的方法 三、深度学习在脸识别中的应用1. 卷积神经网络&#xff08;CNN&#xff09;2. FaceNet和ArcFace 四、使用Python和dlib库实…