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

news2024/12/23 13:34:02

简介

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.coloradmin.cn/o/1936547.html

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

相关文章

SQLite数据库在Android中的使用

目录 一,SQLite简介 二,SQLIte在Android中的使用 1,打开或者创建数据库 2,创建表 3,插入数据 4,删除数据 5,修改数据 6,查询数据 三,SQLiteOpenHelper类 四&…

信弘智能与图为科技共探科技合作新蓝图

本期导读 近日,图为信息科技(深圳)有限公司迎来上海信弘智能科技有限公司代表的到访,双方共同探讨英伟达生态系统在人工智能领域的发展。 在科技日新月异的今天,跨界合作与技术交流成为了推动行业发展的重要驱动。7月…

使用JWT双令牌机制进行接口请求鉴权

在前后端分离的开发过程中,前端发起请求,调用后端接口,后端在接收请求时,首先需要对收到的请求鉴权,在这种情况先我们可以采用JWT机制来鉴权。 JWT有两种机制,单令牌机制和双令牌机制。 单令牌机制服务端…

JAVA 异步编程(线程安全)二

1、线程安全 线程安全是指你的代码所在的进程中有多个线程同时运行,而这些线程可能会同时运行这段代码,如果每次运行的代码结果和单线程运行的结果是一样的,且其他变量的值和预期的也是一样的,那么就是线程安全的。 一个类或者程序…

Linux驱动开发-06蜂鸣器和多组GPIO控制

一、控制蜂鸣器 1.1 控制原理 我们可以看到SNVS_TAMPER1是这个端口在控制着蜂鸣器,同时这是一个PNP型的三极管,在端口输出为低电平时,蜂鸣器响,在高电平时,蜂鸣器不响 1.2 在Linux中端口号的控制 gpiochipX:当前SoC所包含的GPIO控制器,我们知道I.MX6UL/I.MX6ULL一共包…

整顿职场?安全体系建设

本文由 ChatMoney团队出品 00后整顿职场,职场到底怎么了?无压力、无忧虑的00后可以直接开整,那绝大部分打工人寒窗苦读、闯过高考,艰辛毕业,几轮面试杀入职场,结婚买房、上有老下有小,就活该再被…

怎么剪辑音频文件?4款适合新的音频剪辑软件

是谁还不会音频剪辑?无论是个人音乐爱好者,还是专业音频工作者,我们都希望能找到一款操作简便、功能强大且稳定可靠的音频剪辑工具。今天,我就要为大家带来四款热门音频剪辑软件的体验感分享。 一、福昕音频剪辑 福昕音频剪辑是…

JUnit 单元测试

JUnit 测试是程序员测试,就是白盒测试,可以让程序员知道被测试的软件如何 (How)完成功能和完成什么样(What)的功能。 下载junit-4.12和hamcrest-core-1.3依赖包 相关链接 junit-4.12:Central …

【JavaScript 算法】最长公共子序列:字符串问题的经典解法

🔥 个人主页:空白诗 文章目录 一、算法原理状态转移方程初始条件 二、算法实现注释说明: 三、应用场景四、总结 最长公共子序列(Longest Common Subsequence,LCS)是字符串处理中的经典问题。给定两个字符串…

Go语言之参数传递

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 修改参数 假设你定义了一个函数,并在函数里对参数进行…

string相关

int main() {// world替换成 xxxxxxxxxxxxxxxxxxxxxxstring s1("hello world hello bit");s1.replace(6, 5, "xxxxxxxxxxxxxxxxxxxxxx");cout << s1 << endl;s1.replace(6, 23, "yyyyy");cout << s1 << endl;// 所有空格…

C++ | Leetcode C++题解之第260题只出现一次的数字III

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> singleNumber(vector<int>& nums) {int xorsum 0;for (int num: nums) {xorsum ^ num;}// 防止溢出int lsb (xorsum INT_MIN ? xorsum : xorsum & (-xorsum));int type1 0, …

类和对象:构造函数

构造函数是特殊的成员函数&#xff0c;需要注意的是&#xff0c;构造函数虽然名称叫构造&#xff0c;但是构造函数的主要任务并不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时&#xff0c;空间就开好了)&#xff0c;⽽是对象实例化时初始化对象。构造函数的本质是要替代…

通过splunk web服务将服务器上文件下载到本地

1. 需求说明 工作中经常遇到需要将服务器上的文件下载到本地&#xff0c;但是由于各种网络环境限制&#xff0c;没办法使用winscp或者xftp工具&#xff0c;那么如何将服务器上的文件下载下来呢&#xff1f; 这里提供一种思路: 如果服务器上安装有web服务&#xff0c;可将待下…

MongoDB教程(十四):MongoDB查询分析

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、查询分…

防火墙之内容安全过滤技术篇

深度行为检测技术&#xff1a;是一种基于应用层的流量检测和控制技术 DPI:针对完整的数据包&#xff0c;进行内容的识别和检测 基于应用网关的检测技术 --- 有些应用控制和数据是分离的&#xff0c;比如一些视频流。一开始会通过TCP协议链接之后&#xff0c;协商一些参数&#…

扩容升级丨极海正式推出G32A1465系列汽车通用MCU,驱动智驾再进阶

继2023年推出G32A系列汽车通用平台首发产品G32A1445系列后&#xff0c;极海宣布正式推出G32A1465系列全新汽车通用MCU&#xff0c;以满足日益增长的智能驾驶应用需求。作为升级迭代产品&#xff0c;G32A1465专为应用范围不断扩大的高运算要求而设计&#xff0c;集成丰富的通信接…

服务器证书基于 OpenSSL一键颁发脚本

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

【Vue】深入了解 Axios 在 Vue 中的使用:从基本操作到高级用法的全面指南

文章目录 一、Axios 简介与安装1. 什么是 Axios&#xff1f;2. 安装 Axios 二、在 Vue 组件中使用 Axios1. 发送 GET 请求2. 发送 POST 请求 三、Axios 拦截器1. 请求拦截器2. 响应拦截器 四、错误处理五、与 Vuex 结合使用1. 在 Vuex 中定义 actions2. 在组件中调用 Vuex acti…

Elasticsearch:Retrievers 介绍 - Python Jupyter notebook

在今天的文章里&#xff0c;我是继上一篇文章 “Elasticsearch&#xff1a;介绍 retrievers - 搜索一切事物” 来使用一个可以在本地设置的 Elasticsearch 集群来展示 Retrievers 的使用。在本篇文章中&#xff0c;你将学到如下的内容&#xff1a; 从 Kaggle 下载 IMDB 数据集…