【现学现忘Docker基础】— 11.Docker常用命令:容器常用命令(二)

5、重启容器

就是重新启动一个容器。

命令:docker restart 容器ID或者容器名

示例

先查看当前宿主机的容器状态。

然后重启第一个容器,ID为14b077f2496b,名称为mycentos。

这里我们一定要注意看STATUS状态为Up 2 hours

我们重启该容器,并查看他的启动时间,



我们可以看到重启之后,mycentos容器的启动时间变为了4秒,说明该容器进行了重启。

6、停止容器

停止正在运行的容器。(正常关闭容器)

命令:docker stop 容器ID或者容器名

演示:

先查看当前宿主机的容器状态。



执行命令关闭第三个容器,如下图:


7、强制停止容器

停止正在运行的容器。(暴力关闭容器)

命令:docker kill 容器ID或者容器名

演示:

先查看当前宿主机的容器状态。


执行命令,强制关闭第二个容器,如下图:


8、删除已停止的容器

命令:docker rm 容器ID

(1)删除一个已停止的容器

先查看当前宿主机的容器状态。



删除第一个正在运行的容器,如下:

[root@192 ~]# docker rm 14b077f2496b
Error response from daemon: You cannot remove a running container 14b077f2496b3c11d041a8bb138f60b32538ddedebe88245dc805a25669d0d83. Stop the container before attempting removal or force remove

守护进程daemon会提示我们,您不能删除正在运行的容器,请先停止容器。

如果需要删除正在运行的容器,加-f参数,进行强制删除。

那我们接下来删除第二个容器,如下:


可以看到,第二个容器已经删除,现在宿主机上只有3个容器了。

(2)一次性删除多个已停止的容器

命令:docker rm 容器1ID 容器2ID 容器3ID ...

示例:

删除第二第三个容器,如下:

[root@192 ~]# docker rm 136475a80d92 5b6c5748a7b9
136475a80d92
5b6c5748a7b9
[root@192 ~]# docker ps -a 
CONTAINER ID   IMAGE          COMMAND       CREATED       STATUS        PORTS  NAMES
14b077f2496b   300e315adb2f   "/bin/bash"   3 hours ago   Up 19 minutes        mycentos

我们可以看到,此时宿主机上只有一个容器了。

(3)删除所有本机已停止的容器

  • 方式一:

    命令:docker rm -f $(docker ps -aq)

    说明:docker rm -f 删除所有docker ps -aq命令显示容器ID对应的容器。

  • 方式二:

    docker ps -aq| xargs docker rm

    说明:docker ps -aq命令执行的结果,通过管道符,传递给后边的xargs。

    xargs是给命令传递参数的一个过滤器,以将管道或标准输入的数据转换成参数。

9、后台启动容器

后台启动容器也叫启动守护式容器。

命令:docker run -d 镜像ID或镜像名

查看本地镜像

[root@192 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    300e315adb2f   3 months ago   209MB

以后台模式启动centos容器

# 使用镜像`centos:latest`以后台模式启动一个容器
[root@192 ~]# docker run -d centos
57fbb28467164eedf38f118530807840cdaab8497c43d6741a93c36f7ea408a3

执行命令后,返回了创建容器的ID,说明该容器一定启动了。

我们通过docker ps命令查看启动的容器

[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

发现此时宿主机中并没有正在运行的容器。

通过docker ps -a命令查看本地容器


可以发现57fbb2846716容器确实被创建过了。

重点:

这里就有问题了,使用后台模式启动容器,然后使用docker ps -a命令查看到centos容器已经停止了。

很重要的说明的一点:Docker容器后台模式运行,但是容器中要必须有一个前台进程运行。

Docker容器的运行,如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的,这个是Docker的机制问题。

说明:

比如,Docker中的容器,我们还以centos容器为例进行说明。

在Docker中centos容器使用后台进程模式运行,而centos容器中并没有配置项目或者其他应用,也就是没有对外提供的服务,就导致Docker发现该容器前台没有运行的应用,这样的容器启动后Docker会立即杀掉,因为Docker觉得他没事可做了。

所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,就是这种容器加上-it参数运行。

如下:



(这种模式也是有使用场景的,我们先知道Docker的这种机制就好。)

你可能感兴趣的:(【现学现忘Docker基础】— 11.Docker常用命令:容器常用命令(二))