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

相关推荐
是小崔啊2 小时前
叩丁狼K8s - 概念篇
云原生·容器·kubernetes
ZERO_pan2 小时前
服务器装机遇到的问题
运维·服务器
杀气丶3 小时前
Linux下运行芙蕾雅天堂2【俄文简译L2FATER】
运维·服务器·天堂2·l2fater·l2fater.cn
太空的旅行者4 小时前
告别双系统——WSL2+UBUNTU在WIN上畅游LINUX
linux·运维·ubuntu
九章云极AladdinEdu5 小时前
超参数自动化调优指南:Optuna vs. Ray Tune 对比评测
运维·人工智能·深度学习·ai·自动化·gpu算力
人工智能训练师5 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
Tisfy7 小时前
服务器 - 从一台服务器切换至另一台服务器(损失数十条访客记录)
运维·服务器
qq_264220898 小时前
Nginx优化与 SSL/TLS配置
运维·nginx
Aspiresky9 小时前
浅析Linux进程信号处理机制:基本原理及应用
linux·运维·信号处理