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

Docker容器的基本操作

时间:2023-04-01 22:29:42 Java

docker中的容器是一个轻量级的虚拟机,是镜像运行的状态。本文将首先了解一下容器的基本操作。镜像就像一个安装程序,而容器就是程序运行时的一种状态。查看容器启动docker后,使用dockerps命令查看当前运行的容器:$dockerps查看所有容器以上命令是查看当前运行的容器。如果需要查看所有的容器,可以使用dockerps-a命令查看:$dockerps-a查看一个容器时,涉及到几个查看参数,含义如下:CONTAINERID:CONTAINERID指的是idofthecontainer,这是一个唯一的标识,是一个64位的十六进制整数,如果不混淆的话,只用id的前几位就可以标识一个容器。IMAGE:IMAGE表示创建容器时使用的图像。COMMAND:COMMAND表示容器运行的最后一个命令。CREATED:容器创建的时间。STATUS:容器的状态,可能会显示容器启动时间,也可能会显示容器关闭时间。显示哪一个取决于容器的当前状态。PORTS:容器对外开放的端口。NAMES:容器的名字,如果不设置,会有一个默认的名字。查看新创建的容器使用dockerps-l查看最近创建的容器,如下:$dockerps-l查看新创建的n个容器可以使用dockerps-n=XXX查看新创建的n个容器,如下:$dockerps-n=2创建一个容器有两种不同的方式来创建一个容器作为一个整体。可以先创建再启动,也可以先创建再启动,一步到位。无论哪种方式,过程都是相似的。当执行完一个create命令后,docker会先搜索本地路径,看是否有对应的镜像。如果没有,它将在dockerhub上搜索。如果找到,就会下载,然后使用镜像创建容器并启动。容器的文件系统就是在只读的镜像文件上加了一个可读写的文件层,这样只记录改变的数据,而不改变镜像。下面分别介绍这两种方法。开发者可以先使用dockercreate命令创建容器。此时创建的容器处于停止状态,没有运行。例如创建一个nginx容器,创建命令如下:$dockercreatenginx创建成功后,可以查看容器是否创建成功:$dockerps-a此时创建的容器没有运行并且处于停止状态。容器的名称是随机生成的。开发者也可以在创建容器时指定名称,如下所示:$dockercreate--name=nginxnginx此时name属性不是随机生成的,而是用户指定的名称。此方法只是创建一个用户,并不启动它。容器创建+启动如果开发人员需要同时创建和启动容器,他们可以使用dockerrun命令。dockerrun命令可以启动两种不同模式的容器:后台容器和交互式容器。顾名思义,后台容器就是在后台运行的容器。无需与开发人员交互,在后台静默执行计算就足够了,而交互式容器需要接收开发人员的输入,处理它并给出反馈。对于开发者来说,大多数情况下,后台容器是创建出来的,但很多时候,即使是后台容器也不可避免地需要交互。下面分别来看一下。后台类型容器后台类型容器以nginx为例。一般nginx可以后台运行:$dockerrun--namenginx1-d-p8080:80nginx--name含义同上,表示创建的容器名称。-d表示容器在后台运行,-p表示将容器的80端口映射到宿主机的8080端口。首先,它仍然会在本地进行检查。如果本地没有对应的容器,会去DockerHub上搜索,找到,下载运行,生成容器id。运行成功后,在浏览器中输入http://localhost:8080,就可以看到Nginx的默认页面了。这是创建背景容器的基本方法。交互式容器也可以创建交互式容器。比如创建一个ubuntu容器,开发者可能需要在ubuntu上输入命令进行相关操作。交互式容器创建方法如下:$dockerrun--nameubuntu-itubuntu/bin/bash参数含义同上,除了-it,-it参数,i表示标准输入(STDIN)的开发容器,t表示告诉docker为容器创建一个命令行终端。命令执行后会打开一个输入终端,读者可以在这个终端中愉快的操作ubuntu。要退出终端,只需输入exit命令。容器启动如果开发者使用dockerrun命令创建容器,创建完成后容器已经启动。如果容器是使用dockercreate命令创建的,则需要执行dockerstart命令启动容器。使用dockerstart命令结合Containerid或containername可以启动一个容器。dockerstart启动现有容器。要使用此命令启动容器,您必须首先知道容器的ID或名称。开发人员可以使用这两个属性来启动一个容器(在这种情况下,nginx是通过名称启动的,而ubuntu是通过id启动的)。一般来说,第一次可以使用dockerrun启动一个容器,然后直接使用dockerstart。重启容器在运行过程中,难免会出现问题。当出现问题时,需要能够自动重启。这个需求可以通过在容器启动时使用--restart参数来实现。根据docker官网的解释,docker的重启策略分为四种:no:表示不自动重启容器,默认。on:failure:[max-retries]:表示当退出状态为非零(异常退出)时会重启,有一个可选参数:maximumnumberofrestarts,可以设置最大重启次数,当重启次数达到上限,将放弃重启。always:表示始终重启容器。当docker守护进程启动时,它会尝试重新启动容器,而不管当时容器的状态如何。unless-stopped:表示容器一直重启,但是dockerdaemon启动时,如果容器已经停止运行,则不会重启。可以使用dockerstop命令终止容器。容器可以通过名称或ID终止。$dockerstopcontainer_name/idcontainerdelete单个删除的容器在停止后仍然存在,如果需要可以通过dockerstart命令重新启动一个容器,如果不需要容器可以通过dockerrm删除一个容器命令。删除容器时,只能删除已停止的容器,无法删除正在运行的容器。可以按名称或ID删除容器。如果一定要删除正在运行的容器,可以使用-f参数,如下:$dockerrm-fubuntuBatchdelete容器也可以批量删除,命令如下:$dockerrm$(dockerps-a-q)dockerps-a-q将列出rm命令要删除的所有容器ID。以下命令也支持删除退出的隔离容器:$dockercontainerprune更多干货请前往:https://antonipeng.com