docker小白第三天

news/2025/2/13 22:13:57/

docker小白第三天

docker为什么会比虚拟机快

1、docker有着比虚拟机更少的抽象层。不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显优势。
2、docker利用的是宿主机的内核、不需要重新加载操作系统内核OS。当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等,比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
在这里插入图片描述

帮助启动类命令

启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker具体命令--help

镜像命令

docker images 列出本地主机上的镜像
docker search 某个xxx镜像名字
docker pull 某个xxx镜像名字
docker system df 查看镜像/容器/数据卷所占的空间docker rmi 某个xxx镜像名字ID 

docker images如下图所示,列出本机上的镜像
在这里插入图片描述
docker search redis,在docker远程仓库中搜索镜像名字如下图:
在这里插入图片描述

docker search --limit 5 redis
--limit:只列出N个镜像,默认25个
docker pull redis [:TAG] 下载指定TAG(版本号)的redis镜像
docker pull redis 默认下载最新的镜像
docker system df  查看空间

在这里插入图片描述

docker rmi hello-world 
docker rmi [IMAGE ID]
两者均可删除镜像,第二种是通过指定唯一值的IMAGE ID 来进行删除。删除前需要先停止该镜像在容器中的使用。否则会出警告。
或者使用如下命令,强制删除
docker rmi -f [IMAGE ID]

在这里插入图片描述

docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除多个镜像
docker rmi -f $(docker images -qa)
删除全部镜像

docker虚悬镜像是什么?

docker images执行后,在本地镜像列表显示仓库名、标签都是的镜像,俗称虚悬镜像dangling image。
在这里插入图片描述

容器说明

有镜像才能创建容器,这是一个根本的前提。docker是运行在linux类型资源上。例如在一个linux物理机器上,先docker pull ubuntu,下载一个最新的ubuntu镜像。
在这里插入图片描述

容器命令

下载ubuntu镜像后,就是进行容器的操作。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

在这里插入图片描述

docker run -it ubuntu /bin/bash
-i 是代表交互式操作
-t 是代表终端
/bin/bash  是因为我们希望有个交互式的shell显示。
exit 在交互式的shell中输入该命令,是退出容器,关闭容器,并不能使得容器在后台运行,因为是交互式容器。
ctrl+p+q 同样是退出,则容器不停止

使用最新的镜像ubuntu以交互模式启动一个容器,在容器内执行/bin/bash命令。
在这里插入图片描述
保持容器ubuntu的存在,然后新建一个shell,连接到该机器,执行以下命令。则能看到当前在运行状态的容器。因为启动容器时并没有指定名字,所以看到NAMES字段下的名字是随机生成的。

docker ps 

在这里插入图片描述

指定容器名字后运行
docker run -it --name=test ubuntu /bin/bash
在容器外的命令行界面查看容器运行状态
docker ps

这里可以看到容器的名字变为了规定好的test,形象的表示就是一头鲸鱼身上背了两个集装箱。
在这里插入图片描述

docker ps --help
命令帮助说明
docker ps -a
历史启动过的容器和当前正在运行的容器
docker ps -l
显示最近创建的容器
docker ps -n [数字]
显示最近N个创建的容器

在这里插入图片描述

docker start 容器id或容器名
启动已经停止运行的容器
docker restart 容器ID或容器名
重启容器
docker stop 容器id或容器名
停止容器
docker kill 容器id或容器名
强制停止容器
docker rm 容器id
删除容器
docker rm -f 容器id
强制删除容器
docker ps -aq
显示所有容器的id
启动守护式容器,即后台可保持运行的容器
docker run -d 容器名

需要注意的点是,以后台进程形式启动容器后,记得docker ps -a查看下。有时会出现以下情况。redis默认会有前台运行进程,所以使用-d启动,后台进程不会自杀。
在这里插入图片描述

docker logs 容器id
查看容器日志

在这里插入图片描述

docker top 容器id
查看容器内运行的进程

在这里插入图片描述

docker inspect 容器id
查看容器内部细节

在这里插入图片描述

docker exec -it 容器id /bin/bash
以交互式重新进入容器,即在容器中打开新的终端,用exit退出时不会导致容器的停止
docker attach 容器id
重新进入容器,在使用exit退出后,会杀死容器
docker cp 容器id:容器内路径 目的主机路径

将容器内的文件filetest.txt拷贝到了主机上root目录内
在这里插入图片描述

docker export 容器ID>文件名.tar
导出容器的内容留作一个tar归档文件
cat 文件名.tar|docker import - 镜像用户/镜像名:镜像版本号
从tar包中的内容创建一个新的文件系统在导入为镜像

在这里插入图片描述
将前一步导出的包在导进去,重名了一个新镜像
在这里插入图片描述
然后在新建一个容器,该容器就跟刚刚导出的容器是一样的
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1269508.html

相关文章

ASF-YOLO开源 | SSFF融合+TPE编码+CPAM注意力,精度提升!

目录 摘要 1 Introduction 2 Related work 2.1 Cell instance segmentation 2.2 Improved YOLO for instance segmentation 3 The proposed ASF-YOLO model 3.1 Overall architecture 3.2 Scale sequence feature fusion module 3.3 Triple feature encoding module …

css中2D/3D的变化

变换可以改变元素的位置、大小、旋转、倾斜等属性,以创建各种动态效果。 一、常用的2D变换: 平移(translate):使用 translate() 函数来改变元素的位置。可以指定水平和垂直方向的偏移量,如 transform: tra…

git-vscode

git-vscode ctrlshiftp 创建分支 create branch 直接切到新的分支了 切换分支 直接点左下角自己选择 vscode中配置仓库 https://blog.csdn.net/zora_55/article/details/129709251 推送tag tag作用就是在 Git 中,标记存储库历史记录中特定提交的一种方式。t…

Redisson分布式锁原理分析

1.Redisson实现分布式锁 在分布式系统中,涉及到多个实例对同一资源加锁的情况,传统的synchronized、ReentrantLock等单进程加锁的API就不再适用,此时就需要使用分布式锁来保证多服务之间加锁的安全性。 常见的分布式锁的实现方式有&#xff…

Redis和MySQL双写一致性实用解析

1、背景 先阐明一下Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis是用来当缓存,用来提升数据访问的性能。 关于如何保证Mysql和Redis中的数据一致(即缓存一致性问题…

【Qt之QNetworkAccessManager】概述及示例

概述 QNetworkAccessManager类允许应用程序发送网络请求和接收应答 网络访问API是围绕一个QNetworkAccessManager对象构建的,该对象为它发送的请求保存通用配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号,以及可用于监视网络操…

yolov8常用命令

1.运行预测 (1)运行目标检测模型: yolo predict modelyolov8n.pt sourcebus.jpg (2)运行目标检测与分割模型 yolo predict modelyolov8n-seg.pt sourcebus.jpg 2.模型训练 复制coco128.yaml更名为myDetect.y…

WebSocket 协议的原理和实践

WebSocket 是一种基于 TCP 的双向通信协议,它可以在客户端和服务器之间建立一个持久连接,并且可以在连接生命周期内进行数据的传输。WebSocket 协议的目的是为了解决 HTTP 协议的一些局限性,比如: HTTP 协议是单向的:…