docker基础篇-----02-----docker帮助命令、镜像命令、容器命令

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记

一 Docker常用命令

1. docker帮助命令

  • (1) 查看docker版本:
    docker version
  • (2) 查看docker信息:
    docker info
  • (3) docker帮助命令:
    docker --help

2. docker镜像命令

2.1 列出所有镜像
  • docker images:列出本地主机上的镜像,镜像由镜像名:tag唯一标记,tag可认为是版本号。

    • docker images -a:列出本地所有的镜像(含中间映像层)。
    • docker images -q:只显示镜像的id。
    • docker images --digests:显示镜像的摘要信息。
    • docker images --no-trunc:显示完整的镜像信息。
      在这里插入图片描述
      选项说明:
  • REPOSITORY:表示镜像的仓库源。

  • TAG:镜像的标签。

  • IMAGE ID:镜像ID。

  • CREATED:镜像创建时间。

  • SIZE:镜像大小。

2.2 在github搜索镜像
  • docker search 镜像名:在docker hub上搜索某个镜像。
    选项:
    • –automated:弃用,只列出自动构建类型的镜像。
    • –filter , -f:基于给定条件过滤输出。
    • –format:使用模板格式化显示输出。
    • –limit:Max number of search results ,默认值25。
    • –no-trunc:禁止截断输出。
    • –stars , -s:弃用,只显示收藏数不小于几颗星的镜像,移到–filter中使用。

部分例子:

# 1. 只列出automated build类型的镜像。
docker search --automated tomcat					# 低版本
docker search --filter is-automated=true tomcat		# 高版本

# 2. 限制搜索输出个数
docker search redis --limit 5

# 3. 显示完整的镜像描述,即不截断。
docker search --no-trunc tomcat

# 4. 列出starts数不小于30的镜像。
docker search -s 30 tomcat							# 低版本
docker search --filter=stars=30 tomcat				# 高版本,例如我的是20.10.7,执行上面的-s会报错。
2.3 下载镜像
  • docker pull 镜像名:TAG:下载指定TAG的镜像,不加TAG默认为latest。
    例如 docker pull tomcat。
2.4 删除未在使用的镜像
  • docker rmi 镜像名:删除未在使用镜像,若在使用则不能删除,默认删除latest的。
    • docker rmi -f 镜像名:强制删除,即使在使用也可以删除。
    • docker rmi -f 镜像名1:TAG 镜像名2:TAG:删除多个。
    • docker rmi -f $(docker images -qa):删除全部。

3. docker容器命令

docker pull ubuntu
3.1 新建并启动容器
docker run [options] 镜像名|镜像ID [command] [arg...]:新建并启动容器

常用optins:
--name:为容器指定一个名称。
-i:以交互模式运行容器,通常与-t同时使用。
-t:为容器重新分配一个伪输入终端,通常与-i同时使用。
-d:后台运行容,即启动守护式容器。
-P: 随机端口映射,端口由系统自行随机分配。
-p: 指定端口映射,有以下四种格式:
	1)ip:hostPort:containerPort
	2)ip::containerPort
	3)hostPort:containerPort
	4)containerPort
例如,/bin/bash代表command:
docker run -it --name=myubuntu0311 ubuntu /bin/bash

在这里插入图片描述

3.2 列出正在运行的容器

此时新开一个终端输入以下命令,可以看到上面的容器正在运行。

docker ps

在这里插入图片描述
其它选项:

docker ps -a:列出当前所有正在运行的容器+历史上运行过的容器。
docker ps -l:显示最近创建的容器。
docker ps -n 数字:显示最近创建的n个容器。
docker ps -q:静默模式,只显示容器编号。
docker ps --no-trunc:不截断输出。
3.3 退出容器
exit:容器停止退出。
Ctrl+P+Q:容器不停止退出。

注意,进入容器后,Ctrl+C不会退出容器,可以认为没有影响,Ctrl+C只是中断某个操作而已。

演示exit,首先docker ps看到容器正在运行,然后第2步使用exit退出,在使用docker ps看到,容器已经停止退出。
在这里插入图片描述

演示Ctrl+P+Q。

# 1. 首先把原来停止的容器重新启动。
docker start myubuntu0311

# 2. 查看是否启动。
docker ps

# 3. 进入容器。f36b4f7e7614是容器ID,由docker ps获取。
docker exec -it  f36b4f7e7614 /bin/bash

# 4. 按下Ctrl+P+Q。xshell也是可以的,我的环境就是在xshell测试的。

# 5. 再次查看容器,可以看到容器并未退出。
docker ps

如下图:
在这里插入图片描述

但是需要注意,如果创建容器的时候是以守护进程即-d选项创建的话,那么即使你使用exit退出,容器也不会停止的,此时docker ps还是能看到该容器正在运行。
在这里插入图片描述

3.4 启动/重启/停止容器
# 1. 启动容器。
docker start 容器ID或者容器名

# 2. 重启容器。
docker restart 容器ID或者容器名

# 3. 停止容器,类似于电脑关机。
docker stop 容器ID或者容器名

# 4. 强制停止,类似于电脑拔电源关机。
docker kill 容器ID或者容器名
3.5 删除容器
# 1. 删除已停止的容器,若未停止则不删除。
docker rm 容器名

# 2. 强制停止并删除容器。
docker rm -f 容器名

# 3. 删除所有容器。
docker rm -f $(docker ps -aq)
3.6 后台运行容器
# 启动守护式容器,运行在后台,用docker ps查看看不到,因为docker容器想在后台运行,就必须要有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(例如top、tail、或者自己的程序一直在前台运行),那么容器就会自动退出,这种是docker的机制问题。
docker run -d 容器名

# 例如:
# 1. 只加-d参数或者加上--name参数创建容器,docker ps都不会看到这些创建的容器,因为会自动停止了。
docker run -d ubuntu
docker ps
# 不过可以通过-a选项查看以前运行过的容器,证明这些容器确实是有启动过的。
docker ps -a

# 2. 但是注意,如果加上-it,那么表示程序前台运行交互,并启动后台运行。
docker run -it -d --name=myubuntu2 ubuntu
# 此时ps可以看到myubuntu2这个容器是有在运行的。
docker ps

例子的第一点截图:
在这里插入图片描述

例子的第二点截图:
在这里插入图片描述

上面说到,如果只加-d启动容器,如果没有前台进程,那么这个容器会停止运行。
解决方法我一般会使用以下两种:

  • 1)就是在启动容器时,额外添加-it参数,而不能只使用-d参数。这也是比较常用的方法。
例如:docker run -it -d --name=myubuntu2 ubuntu
  • 2)将你要运行的程序以前台的形式运行即可。不过这种比较取巧,一般很少这样用。
例如:docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 2;done"

在这里插入图片描述

3.7 容器日志相关
docker logs [options] 容器ID|容器名:查看容器日志
选项:
-t:加入时间戳。
-f:跟随最新的日志打印(动态打印)。
--tail 数字 容器名:显示最后多少条。
# 如果这个容器继续运行即docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 2;done"
# 1. 那么我们可以查看它的日志。
docker logs 55126741aefc

# 2. 假设时间戳
docker logs -t 55126741aefc

# 3. 动态打印
docker logs -t -f 55126741aefc

# 4. 显示最后多少条。
docker logs -t -f --tail 5 55126741aefc

在这里插入图片描述
加上时间戳后:
在这里插入图片描述
动态打印:
在这里插入图片描述
显示多少条,不过这个只针对一开始显示5条,后续依然会显示多条打印。
在这里插入图片描述

3.8 查看容器内的进程

相当于在容器里面运行了top。

docker top 容器ID|容器名

在这里插入图片描述

3.9 查看容器内部细节
# 查看容器内部细节,返回是json串
docker inspect 容器ID|容器名

由于后面很多内容,所以只截图一小部分。
在这里插入图片描述

3.10 进入正在运行的容器并以命令行交互

进入正在运行的容器有两种方法。

  • 1)docker attach 容器ID|容器名。 直接进入容器启动命令的终端,不会启动新的进程,表示有什么操作进去容器再说。
  • 2)docker exec -it 容器ID|容器名 bash命令。 在容器中打开新的终端,并可以启动新的进程。

例如我们使用attach想要在容器执行某个命令,需要进入以后才能操作。而exec可以不用进入容器就可以操作。
在这里插入图片描述
下面直接在容器外就可以看到结果。
在这里插入图片描述

但是注意,如果使用attach进入容器时,如果使用exit退出,则会导致容器停止运行,不管该容器是否以-d后台运行。而使用Ctrl+P+Q则不会。

下面测试看到,不管是否以后台运行,只要attach进入容器后,exit退出后,ps看到容器都停止了。而使用Ctrl+P+Q则不会,这里就不测试这个了,本人已经测试过。
在这里插入图片描述

而使用exec进入容器:
如果非后台运行,那么exit退出会导致容器停止,Ctrl+P+Q则不会。
如果后台运行,那么exit退出不会导致容器停止,Ctrl+P+Q同样不会。
这一点在停止容器时已经测试,这里不再测试。

总结:
attach、exec进入正在运行的容器,exit、Ctrl+P+Q的退出方式 以及 容器是否后台启动 这三者对容器是否会造成退出的影响:

  • 1)若以attach方式进入容器,以exit退出容器,不管是否后台启动,容器都会停止。
  • 2)若以exec方式进入容器,以exit退出容器,若是后台启动,则容器不会停止。若不是后台启动,则容器会停止。
  • 3)不管以attach还是exec进入容器,然后不管是否是后台启动,只要使用Ctrl+P+Q退出容器,都不会停止容器。
3.11 容器与本机的内容相互拷贝
  • 1)本机内容拷贝到容器:docker cp 本机路径 容器ID|容器名:容器中文件的路径。
  • 2)容器拷贝内容到本机,只需要将参数调换一下即可:docker cp 容器ID|容器名:容器中文件的路径 本机路径。

例如把容器下/lib/os-release文件拷贝到宿主机下。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值