当前位置: 首页 > 后端技术 > Java

【docker专栏6】docker容器状态转换管理命令详解

时间:2023-04-01 13:19:08 Java

docker容器有运行、停止、暂停三种状态。镜像可以创建和运行容器,镜像和容器也可以转成tar包存储。本文介绍了容器的状态转换命令、镜像创建和运行容器相关命令、tar包导入导出以及使用场景。结合下面的命令介绍来理解上图。1.从镜像启动容器从docker镜像启动容器的语法如下,使用dockerrun命令。dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]常用选项说明,dockercreate和dockerrun命令参数几乎一样,只是dockerrun创建并运行容器,dockercreate只创建(可以用查看dockerps-a)不要运行容器。optionfunction-d守护进程,后台运行容器-v目录映射,容器目录挂载到host目录,格式:hostdirectory:containerdirectory-p指定端口映射,格式:host(主机)port:containerport-P随机端口映射,容器内部端口随机映射到宿主机端口--namenginx-zimug容器名nginx-zimug-m,--memorybytes设置容器使用的最大内存-h,--hostnamestring指定容器的hostname--dns8.8.8.8指定容器dnsserver8.8.8.8-eJAVA_HOME="path"设置环境变量,如JAVA_HOME--rmcontainerexits,deletecontainerandcontainerdirectory例子1:运行一个名字(后台(-d)--name)是nginx-zimug的容器,将容器的80端口映射到宿主机的80端口dockerrun-d--namenginx-zimug-p80:80nginx示例2:不加-d,在Linux终端运行下面输出容器的标准输入输出日志。退出终端时,容器停止运行。这种模式通常不用于生产,它通常用于调试容器。dockerrun--rm--namenginx-zimug-p80:80nginx--rm参数用于在容器停止运行后直接删除容器,而不是让容器进入停止状态。示例3:-v表示宿主机目录与容器目录的映射关系dockerrun-d-p80:80\--namenginx-prod\-v/root/nginx/html:/usr/share/nginx/html\-v/root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf\-v/root/nginx/logs:/var/log/nginxnginx2.查看容器和日志dockerps//查看正在运行状态的Containerdockerps–a//查看容器的所有状态(包括running、paused、stopped)dockercontainerls//相当于dockerpsdockercontainerls–a//相当于dockerps–a查看结果为如下:CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES1061ed186789nginx"/docker-entrypoint.…"5minutesagoUp5minutes0.0.0.0:80->80/tcp,:::80->80/tcpnginx-zimugCONTAINERID:容器IDIMAGE:镜像名称COMMAND:容器内部软件脚本启动命令CREATED:容器创建时间STATUS:容器运行状态PORTS:容器与主机的端口映射关系NAMES:容器名称dockerlogsContainerID;//查看容器日志标准输出例如nginx服务的日志如下:3.进入容器内部操作系统有时候我们很难通过dockerps和dockerlogs的信息。这时候我们需要进入容器内部操作系统,使用如下命令。dockerexec-itcontainerID/bin/bash进入容器内部操作系统后,要查看什么信息,和常规使用linux命令一样。要退出容器,请使用exit命令。4.停止容器和挂起容器通过docker找到正在运行的容器id或容器名称psdockerstop9be696a0c283//停止正在运行的容器dockercontainerstopnginx-zimug//执行完这条命令后停止正在运行的容器(ID或Names)进入停止状态,不再提供服务,不占用主机资源。处于停止状态的容器可以再次启动。dockerpause容器名称/容器ID;//暂停容器服务dockerunpause容器名称/容器ID;//resumecontainerservice除了停止容器外,还有一种方法可以暂停容器服务,如上命令所示。挂起的容器不再对外服务,但仍然占用宿主机资源。这种方法不常用!5、启动stopped状态的容器通过dockerps-a可以查看stopped状态的容器信息。使用以下命令使处于停止状态的容器再次进入运行状态。dockerstart容器名称/容器ID不管容器的状态如何,如果要重启容器,可以使用如下命令。dockerrestartcontainername/containerID//重启容器(根据ID或NAMES)六、删除容器如果要删除容器,必须让容器处于停止状态。dockerrm容器ID七、导出和导入将容器导出为tar包,生成容器快照,复制容器当前Linux系统环境dockerexportnginx-zimug>nginx-zimug.tar命令如下图,导入tar包生成镜像,镜像名称为new-nginx-zimugdockerimport-new-nginx-zimug例如使用如下命令将容器nginx-zimug保存为镜像nginx:zimugdockercommit-a"zimug"-m"comment"nginx-zimugnginx:zimug通过dockerimages查看commit生成的镜像#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEnginxzimug7e4e3219870e8秒前142MB9.查看容器配置和资源使用情况查看容器配置信息,该命令会返回一个json格式的信息,比如网络配置、环境变量配置、端口配置、数据量配置等信息。dockerinspect查看容器资源使用情况,使用dockerstats命令查看CPU使用率、内存使用率、网络IO、磁盘IO、进程号等信息。#dockerstatsnginx-zimugCONTAINERIDNAMECPU%MEMUSAGE/LIMITMEM%NETI/OBLOCKI/OPIDSec6953bce17bnginx-zimug0.00%1.41MiB/990.9MiB0.14%656B/0B0B/7.68kB2你可以使用dockertop命令查看容器中的进程信息。如下题所示,有master进程和worker进程。#dockertopnginx-zimugUIDPIDPPIDCSTIMETTYTIMECMDroot61696150010:27?00:00:00nginx:主进程nginx-g守护程序关闭;10162176169010:27?00:00:00nginx:workerprocess欢迎关注我的公告号:字母哥杂谈,回复003给本文所在的专栏《docker修炼之道》一个PDF版,30多篇docker优质文章。Antetokounmpo博客:zimug.com