书籍来源:《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 ~]#
复制代码
在这个输出里,可以查看到容器的各种信息,比如数据卷、网络信息等。