【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指令实现从容器中将文件移动到主机指定路径下。

相关推荐
古月-一个C++方向的小白7 小时前
Linux——查看与创建进程
linux·运维·服务器
驱动探索者9 小时前
find 命令使用介绍
java·linux·运维·服务器·前端·学习·microsoft
Q飞了10 小时前
深入理解k8s中pod、service、deployment和statefulSet等工作负载--图文篇
云原生·容器·kubernetes
BruceD_10 小时前
新装 CentOS 7 切换 yum 源完整指南
linux·python·docker·centos·yum
洋哥网络科技10 小时前
Centos系统替代选择
linux·运维·centos
礼拜天没时间.10 小时前
VMware安装虚拟机并且部署 CentOS 7 指南
linux·运维·centos·系统安装
de之梦-御风10 小时前
【MediaMTX】centos 7 安装MediaMTX
linux·运维·centos
小晶晶京京10 小时前
day54-Zabbix(第三部分)
linux·运维·服务器·zabbix
-dcr11 小时前
22.Nginx 服务器 LNMP项目
运维·服务器·nginx·php·lnmp
東雪蓮☆11 小时前
Docker 搭建 Nginx 并启用 HTTPS 具体部署流程
运维·nginx·docker