docker小白第三天

发布时间:2023年12月18日

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包中的内容创建一个新的文件系统在导入为镜像

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

文章来源:https://blog.csdn.net/weixin_48681463/article/details/134981986
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。