第二章:docker的命令

1、帮助启动类命令

1.1、查看docker状态:systemctl status docker

如下图:docker 处于运行状态
在这里插入图片描述

1.2、停止dokcer:systemctl stop docker

在这里插入图片描述

1.3、启动docker:systemctl start docker

如下图:docker处于运行状态
在这里插入图片描述

1.4、重启docker:systemctl restart docker

在这里插入图片描述

1. 5、设置开机自启动docker:systemctl enable docker

在这里插入图片描述

1. 6、查看docker概要信息:docker info

在这里插入图片描述

1.7、查看docker总体帮助文档:docker --help

在这里插入图片描述
在这里插入图片描述

1.8、查看docker命令帮助文档:docker 某个命令 --help

如下图:查看docker命令【cp】的介绍。
在这里插入图片描述

2、镜像命令

2.1、查看本地主机存在的镜像:docker images

【2.1.1】docker images :这个默认命令显示本地所有的镜像,但是不包含【中间映像层】(又名中间层镜像,或历史映像层)
在这里插入图片描述
名词解释
中间映像层:在docker build(构建)过程中,为了加速镜像构建、重复利用资源,Docker 会利用中间层镜像。(目前没有找到人能听懂的解释,貌似就是没有标签的镜像)

表头说明
REPOSITORY :表示镜像的仓库名(或源)
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

【2.1.2】docker images -a:显示所有镜像包含中间映像层 ;网上没有找到【中间映像层】类似案例,这里没有图片案例

【2.1.3】docker images --digests:显示镜像的摘要信息
在这里插入图片描述
解释
DIGEST(摘要信息):当你从网络上下载某一个包,如果你想要保证下载的包是完整性并且没有被恶意篡改过,常用的方式就是根据这个包的内容,为这个包生成加密哈希串。如何这个加密哈希串和官网的一样,这就说明下载的这个包没有别篡改过,或者是损坏的包。

【2.1.4】docker images --no-trunc:显示完整的镜像信息;
IMAGE ID(镜像ID):默认情况下是显示简短的镜像IMAGE ID ,【–no-trunc】这个参数可以显示完整大的IMAGE ID
在这里插入图片描述

【2.1.5】docker images -q:只显示镜像ID(简短的IMAGE ID)
在这里插入图片描述

【2.1.6】docker images 仓库名:根据仓库名查询镜像
在这里插入图片描述
也可以加上版本号标签:docker images redis:latest
在这里插入图片描述

2.2、在远程镜像库查询是否有指定的镜像:docker search 镜像名

【2.2.1】docker search redis:这里以查看redis为例(默认显示25个版本)
在这里插入图片描述
或者直接在docker hub 这个网站直接查找镜像及版本。
docker hub(https://hub.docker.com/)

表头说明
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。
OFFICIAL: 是否 docker 官方发布
AUTOMATED: 自动构建。

【2.2.2】docker search --limit 5 redis:只显示5个版本的redis (类似于mysql的分页)
在这里插入图片描述

2.3、拉取镜像到本地:docker pull 镜像名

【2.3.1】docker pull redis:拉取redis(默认拉取latest版本,也是就最新版本,官方认证的)
在这里插入图片描述

【2.3.2】docker pull redis:6.0.8:拉取reidis的指定版本。
在这里插入图片描述

2.4、删除镜像:docker rmi -f 镜像ID(IMAGE ID)

【2.4.1】docker rmi -f 7614ae9453d1:删除latest版本的redis
在这里插入图片描述
【2.4.2】docker rmi -f 镜像ID1 镜像ID2:删除多个镜像
在这里插入图片描述
【2.4.3】docker rmi -f $(docker images -aq):删除所有镜像。
docker支持命令复用。这个命令的意思是将符合查询条件结果的镜像ID全部删除,工作中禁用
在这里插入图片描述

2.5、查看镜像、容器、数据卷所占的空间:docker system df

在这里插入图片描述

3、容器命令

3.1、新建容器并启动容器

【3.1.1】:交互式创建容器: docker run 【OPTIONS】 IMAGE 【COMMAND】 【ARG…】

【OPTIONS】参数说明

--name:给新生成的容器取一个名字,如果没有指定名字则有系统默认取一个名字。
-d:后台运行容器并返回容器的ID,也就是守护式容器,也就是后台运行的容器
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
	(例如:在docker中生成并运行一个linux容器,并用这个linux容器的终端(伪终端)进行一系列操作)-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

docker run -it ubuntu /bin/bash:创建一个ubuntu版本的linux容器 并进入Linux容器的伪终端,这个伪终端可以执行一起linux命令。
写法2:docker run -it ubuntu bash :效果和上面是一样的。

当然也可以指定镜像的版本号,例如:docker run -it ubuntu:1.1.0 /bin/bash
在这里插入图片描述
902f72743e31 :这个是生成容器的编号,是唯一的。相当于数据库的主键id;有这个编号,就如上图所示,表示已经进入了这个容器的终端。这个终端可以执行linux的命令,例如查看当前目录的文件 ls

bin/bash :表示载入容器后运行bash ,docker中必须要保持该容器的一个进程的运行,要不然整个容器启动后就又停止运行了。

也可以在生成的容器的时候给容器指定名字:docker run -it --name=myUbuntu ubuntu /bin/bash
在这里插入图片描述
查看处于运行状态的容器必须是宿主机下查看(建议另开一个终端查看)
docker ps:查看处于运行状态的容器(下一节有该命令的详细案例)。
在这里插入图片描述

【3.1.2】 守护式创建容器,也就是容器是以后台运行的

命令:docker run -d 镜像名:版本号
在这里插入图片描述
注意:有些镜像使用守护式创建容器(如ubuntu)。容器会停止,这个是docker的机制问题,这种情况就只能使用交互式,然后再退到宿主机。


3.2、查看处于运行状态的容器:docker ps 【OPTIONS】

在这里插入图片描述
表头说明
CONTAINER ID :容器的id
IMAGE:使用的镜像
COMMAND:启动容器时运行的命令
CREATED:容器的创建时间。
STATUS:容器状态(created:已创建;restarting:重启中;running:运行中;removing:迁移中;paused:暂停;exited:停止;dead:死亡;)。
PORTS:容器的端口信息和使用的连接类型(tcp\udp)
NAMES:系统自动分配或自定义的容器名称。

OPTIONS 参数说明

-a :显示所有的容器,包括未运行的。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
-q :静默模式,只显示容器编号。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
--no-trunc :不截断输出。
-s :显示总的文件大小。

【3.2.1】docker ps -a :显示所有的容器,包括未运行的。
在这里插入图片描述
【3.2.2】docker ps -l : 列出最近创建的2个容器。
在这里插入图片描述
【3.2.3】docker ps -n 3 : 列出最近创建的3个容器。
在这里插入图片描述
【3.2.4】docker ps -q: 静默模式,只显示容器编号(未带其他参数就是显示正在运行的容器id)。
在这里插入图片描述


3.3、退出容器

【3.3.1】exit:在创建一个容器时,并且使用进入了这容器的终端。如果这时使用exit这个命令退出,产生的结果是退出这容器成功。但是容器也停止运行了。(仅限这种情况下的第一次退出容器会发生这种情况,再次启动退出就不会停止运行了。)
1、创建一个容器。并进入了这个容器的伪终端
2、使用【docker ps 】查看当前存活的终端:有一个正在运行的容器
3、使用命令【exit】退出容器伪终端。
4、容器也跟着停止运行了。
在这里插入图片描述
如果再启动这个容器并进入这容器的伪终端。再使用这exit退出。则容器不会停止运行
1、使用命令【docker ps -a】查看所有容器。
2、使用命令【docker restart 68e42cbbb5c5】启动容器
3、使用命令【docker ps】查看正在运行的容器
4、使用命令【docker exec -it 68e42cbbb5c5 /bin/bash】进入容器伪终端
5、使用命令【exit】退出终端
6、再次使用命令【docker ps】查看正常运行的容器。:结果:容器没有停止运行
在这里插入图片描述
如何避免上述情况,就是第一次退出容器。让容器不会停止运行。解决方法:使用组合按键【ctrl+p+q】退出容器。
1、创建一个新容器,并进入了这容器的伪终端
2、查看容器是否正在运行
3、使用组合按键【ctrl+p+q】退出容器伪终端。
4、查看容器是否正在运行:结果:容器没有跟着退出容器终端而停止运行。
在这里插入图片描述
知识点:使用组合按键退出容器在任何情况下都不会停止容器。


3.4、启动已经停止的容器:docker start 容器id

案例命令: docker start 78296b930b5a在这里插入图片描述


3.5、重启容器:docker restart 容器id ;也可以用于启动容器。

【3.5.1】docker restart 78296b930b5a
在这里插入图片描述


3.6、如何进入正在运行的容器的伪终端:docker exec -it 容器id bash

【3.6.1】命令1:docker exec -it 78296b930b5a bash 或者使用命令:docker exec -it 78296b930b5a /bin/bash
在这里插入图片描述
【3.6.2】命令二:docker attach 容器id
在这里插入图片描述
总结:
二者区别:attach 直接进入容器启动命令的终端,不会启动新的进程,exec 是在容器中打开新的终端,并且可以启动新的进程
attach 进入的终端,使用命令exit退出会使容器停止,exec 不会。所以使用attach 进入终端必须使用组合按键【ctrl+p+q】退出终端。


3.7、 停止正在运行的容器:docker stop 容器id

示例命令:docker stop 78296b930b5a
在这里插入图片描述

命令拓展:
同时停止多个正在运行的容器:docker stop 容器id1 容器id2 容器id3
在这里插入图片描述


3.8、杀死正在运行的容器(强制停止):docker kill 容器di

示例命令:docker kill 78296b930b5a
在这里插入图片描述


3.9、删除停止的容器:docker rm 容器id

示例命令:docker rm 78296b930b5a

更多命令: docker rm -f 容器id — 这个可以删除正在运行的容器
工作中禁用命令:docker rm -f $(docker ps -a -q) --删除所有容器,包括运行中的。或者:docker ps -a -q | xargs docker rm -f
在这里插入图片描述


3.10、查看容器运行日志:docker logs 容器id

示例命令:docker logs 0c2315e3fe72
在这里插入图片描述


3.11、查看容器内运行进程: docker top 容器id

示例命令:docker top 0c2315e3fe72
在这里插入图片描述


3.12、查看容器内部细节: docker inspect 容器id

示例命令:docker inspect 0c2315e3fe72
在这里插入图片描述


3.13、从容器中拷贝文件到宿主机:docker cp 容器id:容器中的文件全路径 宿主机的目标全路径

任务:将容器(642266374c12)中的【/tmp/leo.txt】 文件拷贝到宿主机的【/opt】 目录下。
案例命令:docker cp 642266374c12:/tmp/leo.txt /opt

注意:这个命令必须实在宿主机下面执行。
在这里插入图片描述


3.14、从宿主机拷贝文件到容器中:docker cp 要拷贝的文件路径 容器id:要拷贝到容器里面对应的路径

需求:将宿主机上的 【/opt/leo2.txt】文件拷贝到容器(642266374c12)中的【/tmp】目录下。
示例命令:docker cp /opt/leo2.txt 642266374c12:/tmp

注意:这个命令必须实在宿主机下面执行。
在这里插入图片描述


3.15、将容器生成一个镜像(方式一:容器的导出和导入)

说明:将容器打包生产一个压缩文件,然后将压缩文件生成一个镜像。然后再通过这个镜像生成容器。

【3.15.1】导出:将容器以一个压缩包文件的形式导出到宿主机

案例:将容器【642266374c12 】以一个压缩包的形式导出到宿主机的/tmp目录下并取名叫【MyUbuntu.tar】
示例命令:docker export 642266374c12 >/tmp/MyUbuntu.tar
在这里插入图片描述
【3.15.2】将容器压缩包生成一个镜像并用这个镜像创建一个容器 :
【3.15.2.1】将容器压缩包【MyUbuntu.tar 】生成一个镜像【leo/myubuntu:1.0.1】(这里的镜像名字和版本号自己随便取名)

示例命令:cat /tmp/MyUbuntu.tar | docker import - leo/myubuntu:1.0.1
在这里插入图片描述
【3.15.2.2】:使用自定义的镜像生成容器。
生成容器中有当时测试使用的自定义文件(leo.txt;leo2.txt) 这个容器依然是可以正常运行的。
在这里插入图片描述

3.16、将容器生成一个镜像(方式二:commit命令)推荐:没那么麻烦。

命令格式:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:版本号

实操:将正在运行的容器打包成一个镜像

命令:

docker commit -m="create images" -a="Leo" cc9ffbd9b9b2 new_ubuntu:1.1

实图操作步骤
在这里插入图片描述
其他
容器生成镜像不一定要非要容器是正在运行状态的。没有启动的容器也可以。如下图 redis为例。
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当出现"bash: docker: command not found"的错误提示时,表示系统无法找到docker命令。这可能是由于以下几个原因导致的: 1. Docker未正确安装:请确保已正确安装Docker,并且安装路径已正确配置。重新安装Docker可能会解决此问题。\[3\] 2. Docker命令不在系统的PATH环境变量中:请检查系统的PATH环境变量,确保Docker命令所在的路径已正确添加到PATH中。可以使用以下命令来查看PATH环境变量的值:`echo $PATH`。如果Docker命令所在的路径不在其中,可以通过编辑`~/.bashrc`文件或者`/etc/profile`文件来添加路径。添加完成后,记得执行`source ~/.bashrc`或者`source /etc/profile`来使修改生效。 3. Docker服务未启动:请确保Docker服务已正确启动。可以使用以下命令来启动Docker服务:`systemctl start docker`。如果服务已经启动,可以尝试重启服务:`systemctl restart docker`。 4. Docker命令被删除或损坏:如果以上方法都无效,可能是由于Docker命令文件被删除或损坏导致的。可以尝试重新安装Docker来修复此问题。\[3\] 总结起来,解决"bash: docker: command not found"错误的方法包括重新安装Docker、检查PATH环境变量、启动或重启Docker服务以及修复可能损坏的Docker命令文件。希望这些方法能够帮助您解决问题。 #### 引用[.reference_title] - *1* *2* *3* [一次bash: docker: command not found bash: yum: command not found的解决](https://blog.csdn.net/two_brother_/article/details/128826780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值