【Docker】常用帮忙、镜像、容器、其他命令合集(2)

【Docker】常用帮忙、镜像、容器、其他命令合集(2)

博主有话说

紧随上期博文【Docker】常用帮忙、镜像、容器、其他命令合集(1),继续进行容器、其他两部分的命令记录。

容器命令

新建容器并启动

bash 复制代码
docker run [可选参数] image

# 参数说明

--name="Name"  	容器名字
-d 				后台方式运行
-it 			使用交互方式运行,进行容器查看内容
-p				指定容器的端口
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
-P 				随机指定端口

关于-p 容器端口-P需要注意,如果有2条指令docker run -p 234 centosdocker run -P centos,它们是有区别的。

  1. -p 234 centos
  • Docker 会将容器的 234 端口映射到主机上随机选择的一个端口(通常是 32768 以上的高位端口)。
  1. -P centos(大写字母 P)
  • 这是自动端口映射,会将容器中所有暴露的端口(Dockerfile 中用 EXPOSE 声明的端口)自动映射到主机上随机选择的端口(通常是 32768 以上的高位端口)。
  • 例如:如果容器暴露了 80 和 443 端口,使用 -P 会自动将这两个端口分别映射到主机的两个随机端口

可以使用 docker ps 命令查看具体的端口映射关系,输出结果中的 PORTS 列会显示 主机端口->容器端口 的映射信息。

列出所有的运行的容器

bash 复制代码
docker ps 	列出当前正在运行的容器
-a 			列出当前正在运行的容器+带出历史运行过的容器
-n=?		显示最近创建的容器,? 是数字,代表想要显示的容器数量
-q 			只显示容器的编号

退出容器

bash 复制代码
exit    	直接容器停止并退出
Ctrl+P+Q 	容器不停止退出

可以看出用Ctrl+P+Q 退出,容器是依旧在运行的。这里有2个要点,首先对docker run -it centos:7.0.1406 /bin/bash进行分析;其次介绍创建了容器后,退出再进入,exit的实际使用情况

docker run -it centos:7.0.1406 /bin/bash指令解析

  • docker run -it在之前介绍后,表示创建并启用一个容器,且是交互式终端;
  • centos:7.0.1406指定要使用的镜像;
  • /bin/bash是容器启动后执行的命令,这里是启动 Bash shell(Linux 命令行解释器),让你可以在容器内执行各种 Linux 命令。

docker exec -it ... bash 、docker run -it ... bash、docker attach [容器] 的exit行为

采用docker exec -it [容器名/ID] /bin/bash可以实现再次进入已创建的容器,进行操作,此时输入exit指令,理论上来说,应该是直接容器停止并退出,但是用docker ps查看,发现依旧是运行中。

采用docker run -it [容器名/ID] /bin/bash可以实现一个新容器的创建,此时输入exit指令,可以正常退出。

采用docker attach [容器]可以实现再次进入已创建的容器,进行操作,此时输入exit指令,可以正常退出。

这个是什么情况?

通过分析发现,原来docker exec -it [容器名/ID] /bin/bash是在已运行的容器中启动一个新的 Bash 进程(独立于容器的主进程),此时执行 exit 只会终止这个新启动的 Bash 进程,不会影响容器的主进程,因此容器会继续运行

对比不同进入方式的 exit 行为

当然,这个也是docker exec 的设计优势:允许在不影响容器主进程的情况下临时进入容器执行操作(如调试、查看日志等)

删除容器

bash 复制代码
docker rm 容器id   	#删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q | xargs docker rm #删除所有的容器

docker ps -a -q | xargs docker rm

  • docker ps -a -q列出所有容器,且仅输出容器id,结果为一行一个id,便于批量处理;
  • xargs docker rmxargs 将前序输出按行拆成参数,逐个调用 docker rm
  • |把前一命令的输出作为后一命令的输入。

启动和停止容器的操作

bash 复制代码
docker start 容器id     		启动容器
docker restart 容器id			重启容器
docker stop 容器id				停止当前正在运行的容器
docker kill 容器id 				强制停止当前容器

常用其他命令

后台启动容器

bash 复制代码
docker run -d 镜像名

关于这个指令,在前面的容器命令里面有过介绍,在使用过程中,会发现一个很神奇的情况,启用mysql,结果发现停止了

原来,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

查看日志

bash 复制代码
docker logs -f -t --tail 容器id

# 显示日志常用参数
-tf  			#显示日志
--tail number 	# 要显示日志条数

里面docker run -d centos:7.0.1406 /bin/sh -c "while true;do echo haitao;sleep 1;done"表示自己编写一段shell 脚本。

查看容器中进程信息

bash 复制代码
docker top 容器id

查看镜像的元数据

镜像元数据用于描述镜像的身份、构成、配置与属性,常见于容器镜像与云平台镜像,是查找、校验、兼容与自动化的基础。

bash 复制代码
docker inspect 容器id

从容器内拷贝文件到主机上

bash 复制代码
docker cp 容器id:容器内路径  目的的主机路径

先容器中创建测试文件test.java,然后退出。

其次,通过docker cp c7f6730cb023:/home/test.java /home指令实现从容器中将文件移动到主机指定路径下。

相关推荐
满天点点星辰13 小时前
Linux命令大全-find命令
linux·运维·服务器
H_z_q240113 小时前
RHCE的条件测试
linux·运维·服务器
wanhengidc13 小时前
免费云手机的安全性如何?
运维·服务器·安全·智能手机·生活
吕了了14 小时前
41 制作自己的wim包+DIY微软官方ISO文件!
运维·windows·microsoft·电脑·系统
谷粒.14 小时前
自动化测试覆盖率从30%到80%的演进历程:策略、挑战与未来展望
运维·网络·深度学习·架构·自动化·transformer·测试覆盖率
绯雨千叶14 小时前
version“openssl_1.0.0”not found 解决办法
运维·服务器
风华同学14 小时前
【环境搭建篇】ARM+Linux环境搭建
linux·运维·arm开发
温柔如酒14 小时前
【linux调试】使用 sysrq 快照内核状态堆栈
linux·运维·服务器
板鸭〈小号〉14 小时前
简单的http服务器实现C++
运维·服务器
std8602114 小时前
Linux 6.18发布:年度最后版本或成新长期支持版本
linux·运维·服务器