Kubernetes认证考试自学系列 | 管理容器的命令

书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》

一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Kubernetes认证考试自学系列 | 汇总_COCOgsta的博客-CSDN博客


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

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

语法:

docker exec 容器名 命令
复制代码

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

[root@vms100 ~]# docker exec db ip a | grep 'inet '
  inet 127.0.0.1/8 scope host lo
  inet 172.17.0.2/16 scope global eth0
[root@vms100 ~]#
复制代码

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

[root@vms100 ~]# docker exec db ifconfig
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:235:starting container process caused "exec: "ifconfig": executable fle not found in $PATH"

[root@vms100 ~]#
复制代码

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

步骤2:获取容器里bash控制台。

[root@vms100 ~]# docker exec -it db bash
root@a2eb5b77e538:/#
root@a2eb5b77e538:/#
root@a2eb5b77e538:/# exit 
exit
[root@vms100 ~]#
复制代码

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

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

docker cp /path/file 容器:/path2 把物理机的/path/file拷贝到容器里的/path2里
docker cp 容器:/path2/file /path/ 把容器里的/path2/file拷贝到物理机的/path里
复制代码

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

[root@vms100 ~]# docker exec db ls /opt 
[root@vms100 ~]#
[root@vms100 ~]# docker cp /etc/hosts db:/opt 
[root@vms100 ~]# docker exec db ls /opt 
hosts
[root@vms100 ~]# 
复制代码

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

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

[root@vms100 ~]# ls /opt/
rh
[root@vms100 ~]# docker cp db:/etc/passwd /opt/
[root@vms100 ~]# ls /opt/
passwd  rh
[root@vms100 ~]#
复制代码

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

1.6.3 关闭、启动、重启容器

下面演示如何关闭、启动、重启容器。

步骤1:关闭、启动、重启容器。

[root@vms100 ~]# docker ps -q 
a2eb5b77e538
[root@vms100 ~]# docker stop db
db
[root@vms100 ~]# docker ps -q
[root@vms100 ~]# docker start db
db
[root@vms100 ~]# docker ps -q 
a2eb5b77e538
[root@vms100 ~]# docker restart db 
[root@vms100 ~]# docker ps -q 
a2eb5b77e538
[root@vms100 ~]#
复制代码

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

语法:

docker top 容器名
复制代码

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

[root@vms100 ~]# docker top db
UID       PID     PPID   C   STIME   TTY   TIME      CMD
polkitd   15804   15787  0   16:43   ?     00:00:00  mysqld
[root@vms100 ~]#
复制代码

1.6.4 查看容器里的输出

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

docker logs 容器名
复制代码

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

步骤1:查看容器日志输出。

[root@vms100 ~]# docker logs db
Initializing database
2021-02-18T03:15:21.279428Z 0 [Warning] TIMESTAMP with implicit DEFAULT values is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
...大量输出...
2021-02-18T03:15:28.387421Z 0 [Note] Beginning of list of non-natively partitioned tables
2021-02-18T03:15:28.392767Z 0 [Note] End of list of non-natively partitioned tables
[root@vms100 ~]#
复制代码

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

步骤2:查看容器db的属性。

[root@vms100 ~]# docker inspect db
[
  {
    "Id":
...大量的输出...
          "Gateway": "172.17.0.1",
          "IPAddress": "172.17.0.2",
          "IPPrefixLen": 16,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAddress": "02:42:ac:11:00:02"
        }
      }
    }
  }
]
[root@vms100 ~]#
复制代码

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

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/130180611
今日推荐