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.mzph.cn/pingmian/47939.shtml

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

相关文章

机器学习中的数据分析

数据分析是一个涉及收集、清洗、转换、建模和解释数据的过程,目的是揭示模式、趋势和结论,以支持决策制定。以下是一个简化版的数据分析教程,分为几个关键步骤: 1. 定义问题 明确你希望通过数据分析解决的问题。这可能涉及到商业…

安装 Maven

安装 Maven 的步骤: 1. 访问 Maven 官方网站: https://maven.apache.org/download.cgi 2. 下载 Maven 的二进制文件 3. 解压下载的文件到希望安装的目录 4. 将 Maven 的 bin 目录添加到您的系统环境变量 PATH 中(配置环境变量) 这个步骤可…

Jupyter notebook如何快速的插入一张图片?如何控制插入图片的缩放、靠左展示(ChatGPT)

在Jupyter Notebook中,你可以使用Markdown语法快速插入图片,并且可以通过HTML标签来控制图片的展示方式和缩放。 注意:以下所有操作都有一个前提,即选择Cell-CellType-Markdown 1. 快速插入图片 要在Jupyter Notebook中插入图…

澎湃算力 玩转AI 华为昇腾AI开发板——香橙派OriengePi AiPro边缘计算案例评测

澎湃算力 玩转AI 华为昇腾AI开发板 香橙派OriengePi AiPro 边缘计算案例评测 人工智能(AI)技术正以前所未有的速度改变着我们的生活、工作乃至整个社会的面貌。作为推动这一变革的关键力量,边缘计算与AI技术的深度融合正成为行业发展的新趋势…

数据仓库的一致性维度

一致性维度的定义: 一致性维度是指在数据仓库中,具有相同属性和含义的维度在不同的事实表中保持一致。它确保了通过不同事实表进行查询和分析时,维度数据的一致性和准确性。 一致性维度的作用: 数据一致性:一致性维度…

【git】设置github代理

记录git的一些操作。主要是创建分支和如何配置全局代理、github代理。git 本地创建分支并提交 ChatGPT 在 Git 中创建一个本地分支并提交更改可以通过以下步骤完成: 打开终端:首先,打开你的命令行终端。 切换到你的项目目录:使用 cd 命令切换到包含你项目的目录。 bash…

php反序列化练习题

Demo1 <?php error_reporting(0); //关闭错误报告class happy{ protected $filedemo1.php; public function __construct($file){ $this->file$file; } function __destruct(){ if(!empty($this->file)){if(strchr($this->file,"\\")false &&…

Redis持久化(AOF和RDB)

目录 前言 一.RDB 1.1手动执行 1.2自动执行 二.AOF 2.1重写机制 三.混合持久化 Redis的学习专栏&#xff1a;http://t.csdnimg.cn/a8cvV 前言 持久化&#xff0c;在之前&#xff0c;我们接触这个词汇是在mysql数据库当中的事务四大特性里。 持久性&#xff1a;指一旦事…

Linux网络编程之UDP

文章目录 Linux网络编程之UDP1、端口号2、端口号和进程ID的区别3、重新认识网络通讯过程4、UDP协议的简单认识5、网络字节序6、socket编程接口6.1、socket常见接口6.2、sockaddr通用地址结构 7、简单的UDP网络程序7.1、服务器响应程序7.2、服务器执行命令行7.3、服务器英语单词…

vue中v-if和v-for

vue中v-if和v-for Vue 官方建议不要在同一个元素上同时使用 v-if 和 v-for 指令&#xff0c;主要有以下几个原因&#xff1a; 性能问题&#xff1a; 当 v-if 和 v-for 一起使用时&#xff0c;Vue 在每次渲染时都需要先执行循环&#xff0c;然后再对每个元素进行条件判断。这可能…

React antd form表单未保存跳转页面提示

需求是&#xff1a; 表单编辑后没保存&#xff0c;跳转其他页面需要提示未保存&#xff0c;保存就继续form的submit&#xff0c;反之就是关闭弹窗&#xff0c;再切换菜单正常跳转路由。 关键代码如下&#xff1a; const [initialFormValues, setInitialFormValues] useState…

vue学习笔记(十)——Vuex(状态管理,组件间共享数据)

1. vuex基础-介绍 1.1 为什么会有Vuex ? 在现代 Web 开发复杂多变的需求驱动之下&#xff0c;组件化开发已然成为了事实上的标准。然而大多数场景下的组件都并不是独立存在的&#xff0c;而是相互协作共同构成了一个复杂的业务功能。 组件间的通信成为了必不可少的开发需求。…

《Linux运维总结:基于ARM64架构CPU使用docker-compose一键离线部署单机版tendis2.4.2》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面对不同的客户部署业务系统&#xff0…

Apache Kylin

Apache Kylin 是一个开源的分布式分析引擎&#xff0c;提供 SQL 查询接口及多维分析&#xff08;OLAP&#xff09;能力以支持超大规模数据集。它能在亚秒级的时间内提供 PB 级数据的查询能力&#xff0c;非常适合大数据分析和报表系统。 ### 入门指南 #### 1. 环境准备 首先…

数学建模——快递包裹装箱优化问题(2023年长三角数学建模A题问题一、问题二)

快递包裹装箱优化问题 2022 年&#xff0c;中国一年的包 裹已经超过1000 亿件&#xff0c;占据了全球快递事务量的一半以上。近几年&#xff0c;中国每年新增包裹数量相当于美国整个国家一年的包裹数量&#xff0c;十年前中国还是物流成本最昂贵的国家&#xff0c;当前中国已经…

LeetCode题练习与总结:两数之和Ⅱ-输入有序数组--167

一、题目描述 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index…

【IC前端虚拟项目】sanity_case的编写与通包测试

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 在花了大力气完成reference model之后,整个验证环境的搭建就完成了,再多看一下这个结构然后就可以进行sanity_case和通包测试: 关于sanity_case和通包测试我在很多篇文章中说过好多次了在这里就不赘述…

java 中的虚拟机的介绍

Java 虚拟机&#xff08;Java Virtual Machine&#xff0c;简称 JVM&#xff09;是运行 Java 应用程序的核心组件。它提供了一个平台无关的执行环境&#xff0c;使 Java 程序可以在各种硬件和操作系统上运行。以下是 JVM 的详细介绍&#xff1a; 1. JVM 的基本概念 JVM 是一种…

el-menu弹出菜单样式不生效

1. 使用 ruoyi 项目时出现的问题。 <template><el-menu:default-active"activeMenu":collapse"false":unique-opened"true"class"container":collapse-transition"true"mode"horizontal"><sideba…

华为od 100问 持续分享6-入职体检

我是一名软件开发培训机构老师&#xff0c;我的学生已经有上百人通过了华为OD机试&#xff0c;学生们每次考完试&#xff0c;会把题目拿出来一起交流分享。 重要&#xff1a;2024年5月份开始&#xff0c;考的都是OD统一考试&#xff08;D卷&#xff09;&#xff0c;题库已经整…