跳转至

Docker相关操作

一. Docker与操作系统的关系

Docker是系统内的一个进程,靠namespace隔离。

容器没有自己的单独的内核,使用的内核时宿主机的。

对操作系统来说,容器的运行就是一个进程。

将容器所对应的进程结束掉,容器也会结束。

容器的声明完全取决于1号进程,当1号进程结束时,容器退出。

二. Docker的隔离机制

Docker使用Namespace隔离。(命名空间)

Namespace 作用 效果
PID 进程ID隔离 容器内进程从PID1开始,容器内看不到宿主机进程
Mount 挂载点隔离 容器有自己的根目录文件系统
net 网络栈隔离 容器有独立的网卡IP和端口空间
UTS 主机名/域名隔离 容器可以使用自己的hostname,不影响宿主机
IPC 进程间通信隔离 信号量,消息队列互不干扰
user 用户/组ID隔离 容器内的root映射到宿主机的普通用户
cgroup cgroup视图隔离 容器只能看到自己的资源限制

三. Docker的资源限制

1. 内存限制

-m或者

[root@4 ~]# docker run -itd --name test01 -m 300MB httpd:latest
b58697d745eaec4e06343e57f256d0502ad7d907e9ce1eff5b56008c48942bd6
[root@4 ~]# docker run -itd --name test02 -m 500MB httpd:latest
496e3b2375b76cdac050405ca3ce7e7134fe73d15b1a219564b517f3f7cfc1b7
[root@4 ~]# docker stats
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT   MEM %     NET I/O         BLOCK I/O        PIDS
496e3b2375b7   test02    0.00%     12.55MiB / 500MiB   2.51%     936B / 126B     0B / 4.1kB       82
b58697d745ea   test01    0.00%     18.14MiB / 300MiB   6.05%     1.28kB / 126B   13.4MB / 4.1kB   82

四. 使用export和import命令制作镜像