基础命令:

  1. docker stats XXX

查看xxx容器的信息,包括cpu和内存使用,如果想知道详细信息,可以通过docker提供的remote api,一般有三种链接方式:

unix:///var/run/docker.sock   默认的客户端与守护进程的连接方式
tcp://host:port
fd://socketfd

echo -e "Get /containers/xxx/stats http/1.0\r\n\"|nc -u /var/run/docker.sock

2.docker top XXX

查看docker中的进程id(这个id是在host中的进程id,如果进入容器top,容器会有另一套进程id,因为容器自己有进程空间)

3.docker ps|grep XXX 获取containerID

ps -ef|grep containerID

得到docker进程号,docker进程会创建子进程,用2的命令可看子进程的进程号

4.docker image|container|network|system prune

删除无用的image|container|network,system是一条命令删除前三个

5.docker cp xxx containerID:dir

将xxx拷贝到容器的dir下

6.docker diff  xxx

从容器xxx创建以来,列出容器文件系统中已更改的文件和目录。跟踪三种不同类型的变化:A:添加 B:删除 C:改变

7.docker port xxx

容器xxx的端口映射

8.docker update --aaa bbb xxx

更新容器xxx的配置--aaa是某一个属性 bbb为值

基础知识:

1.在k8s集群中 docker容器中的dns server就是k8s中的dns 进docker中看/etc/resolv.conf即可,所有pod中的docker容器可以通过服务名访问别的pod的中的docker服务,即通过这个dns解析出ip

2.docker的隔离性是通过linux的namespace特性实现的,对于linux的每个进程都有各自的六个ns,只是大多进程都在一个ns中,所有进程间的六个ns都一样,但docker为了实现隔离性,每个docker容器的这六个ns都与其他的docker容器不一样,各用个的ns,所有可以达到隔离的目的,可以查看/proc/进程id/ns。但k8s中的pod中的服务docker容器与pause容器公用了三个ns(user,net,ipc)

3.docker对于系统的资源使用限制是通过linux中的cgroup特性实现的,每开启一个docker容器,都会在/sys/fs/cgroup下的每个目录中的docker目录下创建一个以该容器长id为目录名的目录,以/sys/fs/cgroup下的cpu为例,/sys/fs/cgroup/cpu/docker目录下存放着docker容器的资源限制的配置信息,如果在启动docker容器时配置了,这里就是配置值,否则就是默认值。

3.