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

Docker容器进阶操作

时间:2023-04-02 00:52:55 Java

上一篇介绍了一个Nginx的例子。对于Nginx这样的容器,当它启动成功后,我们不可避免的需要修改Nginx的配置。如何完成这个修改毛呢布?附加容器$dockerattachattachedcontainer这个主要针对交互式容器。这个命令有一定的局限性,可以作为理解,实际工作中很少用到。如果使用dockerattach命令,首先要确保容器已经启动,然后使用该命令进入容器。具体操作步骤如下:#创建一个容器,然后启动$dockerrun--nameubuntu-itubuntu#不要关闭当前窗口,然后打开一个新的终端$dockerattachubuntu现在可以输入命令行的容器操作起来。如果容器已经关闭或者容器是后台容器,则此命令无用。从上面的操作可以看出这个命令有很大的局限性,使用场景不多,大家只需要一个一个的理解即可。在容器内执行命令如果容器在后台启动,您可以使用dockerexec在容器内执行命令。与dockerattach不同,使用dockerexec即使用户退出终端,容器也不会停止运行,而使用dockerattach如果用户退出终端,容器将停止运行。基于这个特点,以后我们在容器内部操作的时候,基本都是使用dockerexec命令来实现。查看容器信息容器创建成功后,用户可以通过dockerinspect命令查看容器的详细信息,包括容器id、容器名称、环境变量、运行命令、主机配置、网络配置、数据卷配置.使用format参数只查看用户关心的数据:#查看容器运行状态$dockerinspect-f='{{.State.Running}}'ubuntu#查看容器IP地址$dockerinspect-f='{{。网络设置。IPAddress}}'ubuntu#查看容器名称、容器ID$dockerinspect-f='{{.Name}}{{.ID}}'ubuntu#查看容器主机信息$dockerinspect-f='{{.HostConfig}}'ubuntu查看容器进程使用dockertop命令查看容器中正在运行的进程,首先确保容器已经启动,然后执行dockertop命令。$dockertop查看容器日志交互式容器查看日志非常方便,因为日志直接打印在控制台,但是对于后台容器,如果想查看日志,可以使用docker提供的dockerlogs命令查看它们。$dockerlogsubuntu先启动一个不断记录日志的容器,然后使用dockerlogs命令查看日志,但是默认只能查看历史日志,不能查看实时日志。使用-f参数后,可以查看实时日志。使用--tail参数精确控制日志输出行数,-t参数显示日志输出时间。同时由于加入了-f参数,其他的日志也会继续输出。同时因为加了-t参数,所以时间是和log一起打印出来的。$dockerlogs-f--tail=3-tubuntudocker优点之一就是可移植性,所以docker容器可以随意导入导出。既然containerexport是一个容器,我们当然希望Docker也能像VMWare一样方便的在不同系统之间进行copy,但是Docker没有VMWareexportcontainer方便(其实VMWare中是没有containerexport操作的,直接copy安装directory在Docker中使用export命令导出容器,具体操作如下:本例中我先创建一个nginx容器,然后启动它,启动成功后,上传一个本地的index.html文件到容器$dockerrun-itd--namenginx-p80:80nginx修改nginx主页显示内容$vi./blog/docker/index.html$dockercp./blog/docker/index.htmlnginx:/usr/share/nginx/html/首先运行一个名为nginx的容器,然后在宿主机中编辑一个index.html文件,编辑好后上传到容器中,然后在浏览器中输入http://localhost:80看到修改成功,接下来通过export命令导出容器,如下:$dockerexportnginx>./blog/docker/nginx.tar该命令将容器导入docker目录。导出成功后,我们可以随意传播导出的文件,发送给其他小伙伴使用。与VMWare中庞大的文件相比,导出的文件很小。一般可能只有几百兆,当然要看具体情况。容器是导入的。其他小伙伴拿到这个文件,可以通过执行以下命令导入容器(如果自己重新导入,需要记得删除docker中nginx相关的容器和镜像):$catnginx.tar|dockerimport-importnginx:ilatest容器导入成功后,可以使用dockerrun命令运行。运行成功后,发现我们自定义的index.html页面依然存在,说明这是我们自己的容器。更多干货请前往:https://antoniopeng.com