Docker使用体验札记(2)

        如上,我只运行了一个容器。命令显示了容器的ID、使用的镜像、运行的命令、创建时间、运行时间、端口映射、名称。

八、连接容器
        连接容器有多种办法。在宿主机中使用Docker的attach命令,即可连接到容器:

Docker使用体验札记

        如上,就已经连接到容器了。可以看到命令行信息的变化。
        我使用了ps命令查看了容器中的进程。可以看到一个ID为1的进程,这个进程就是run命令最后的那个参数。Run命令所指定的任务进程Id一定是1 。我们使用attach命令连接的也是这个命令的标准输入输出流(错误流我不知道连接了没)。由于run指定的命令是bash,所以attach也是连接到了bash,这样就能随意操作容器了。
        关闭连接很容易想到,就是退出bash:exit。


        但是、但是、但是,这样退出会导致一个问题,那时就是:容器因为1号进程的退出(就是attach命令连接的bash),会认为任务已完成,容器就停止了。

Docker使用体验札记

        如上,容器已经停止了(Exited)。
        所以,我建议使用exec命令对容器进行操作。我们重启容器:

Docker使用体验札记

        可以看到,start 加容器名称就能启动。
        使用exec命令,可以让容器直接执行命令(docker exec 容器名称 命令):

Docker使用体验札记

        如上,是我用exec对nethost执行ps命令查看进程,执行ls命令列出根目录。
        也可以用exec执行bash并挂载输入输出流:

Docker使用体验札记

        如上,是我用exec命令启动bash并挂载输入输出流。-it参数的意义和run命令相同,不同的是没有使用-d命令,这样(前台模式)可以使命令执行后直接连接输入输出流。我执行了ls命令和ps命令。
        从ps命令的显示可以看出,exec命令启动了一个新的bash,PID为24(当然,PID应该是随机赋值的)。区别于PID为1的bash,我们当前连接的就是这个PID为24的bash,一样可以执行命令,随意操作。并且退出之后,也不会影响PID为1的bash,这样就可以使容器继续运行。

Docker使用体验札记

       上图可见,我退出了容器的bash后,容器依然在运行。我在宿主机中使用exec执行ps命令后,nethost这个容器中1号进程仍然在运行。

九、停止和删除容器
        上面提到了启动容器(start)命令,停止容器当然是停止命令(stop)了。

Docker使用体验札记

        stop命令执行效果如上。
        删除容器更容易,使用rm命令:

Docker使用体验札记

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a70a4ca896bc78047185f809dadb95bd.html