1.7 管理容器的命令

容器如同一台没有显示器的计算机,如何查看容器里的东西,又如何在容器里执行命令呢(图1-18)?可以利用docker exec命令来实现。

通过docker exec命令就可以执行容器里的命令了。

1.7.1 在容器里执行指定的命令

图1-18 在容器里执行命令

语法:

在nerdctl里管理容器的语法如下。

第1步 在容器db里执行ip a | grep 'inet ’命令。

如果容器里没有要执行的命令,就会出现报错。

如果想获取shell控制台,需要加上-it选项。

第2步 获取容器里的bash控制台。

注意

有的镜像里不存在bash,可以使用sh替代。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。

1.7.2 物理机和容器互相拷贝文件

有时我们需要让物理机和容器之间互相拷贝一些文件,它们之间拷贝文件的语法如下。

第1步 把物理机里的/etc/hosts拷贝到容器的/opt里。

可以看到,容器的/opt目录里原来是没有hosts文件的,现在已经拷贝进去了。

第2步 把容器里的/etc/passwd拷贝到物理机的/opt里。

可以看到,物理机的/opt目录里原来是没有passwd文件的,现在已经拷贝进去了。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。

1.7.3 关闭、启动、重启容器

一般情况下,在操作系统里重启某个服务,可以通过“systemctl restart 服务名”命令来实现,容器里一般是无法使用systemctl命令的。如果要重启容器里的程序,直接重启容器就可以了。下面演示如何关闭、启动、重启容器。

第1步 关闭、启动、重启容器。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。

第2步 查看容器里运行的进程。

语法:

这个类似于任务管理器,可以查看到容器里正在运行的进程。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。

1.7.4 查看容器里的输出

当容器无法正常运行时,我们需要查看容器里的输出来进行排错。如果要查看容器里的日志信息,可以使用如下命令。

查看容器日志时,如果要持续显示日志内容,即只要容器内容更新,日志中就能立即显示出来,可以使用“docker logs -f 容器名”命令。

第1步 查看容器日志输出。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。

如果要查看容器的属性,可以通过“docker inspect 容器名”命令来实现。

第2步 查看容器db的属性。

在这个输出里,可以查看到容器的各种信息,比如数据卷、网络信息等。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。