Docker run
命令的--cpuset-cpus
选项,指定container
运行在特定的CPU core
上。举例如下:
# docker run -ti --rm --cpuset-cpus=1,6 redis
另外还有一个--cpu-shares
选项,它是一个相对权重(relative weight
),其默认值是1024
。即如果两个运行的container
的--cpu-shares
值都是1024
的话,则占用CPU
资源的比例就相等。
Docker run
命令的--cpuset-cpus
选项,指定container
运行在特定的CPU core
上。举例如下:
# docker run -ti --rm --cpuset-cpus=1,6 redis
另外还有一个--cpu-shares
选项,它是一个相对权重(relative weight
),其默认值是1024
。即如果两个运行的container
的--cpu-shares
值都是1024
的话,则占用CPU
资源的比例就相等。
我使用的OS
是CentOS 7.1
,需要安装lxc
和lxc-templates
。安装后的模板在/usr/share/lxc/templates
目录下:
# ls
lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-sshd lxc-ubuntu-cloud
lxc-altlinux lxc-busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-ubuntu
接下来以CentOS
为模板创建一个container
:
lxc-create -t centos --name cn-centos
临时的root
密码存在/var/lib/lxc/cn-01/tmp_root_pass
:
# cat /var/lib/lxc/cn-centos/tmp_root_pass
Root-cn-centos-EXb6bB
启动container
:
# lxc-start -n cn-centos
停止container
:
# lxc-stop -n cn-centos
LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers.
The linux containers, lxc, aims to use these new functionalities to provide a userspace container object which provides full resource isolation and resource control for an application or a system.
Linux container
技术的目标是为应用程序或系统提供完整的资源隔离和控制。LXC
项目通过提供一组API
接口和工具,可以让其他程序方便地使用Linux container
技术。
The container technology is actively being pushed into the mainstream linux kernel. It provides the resource management through the control groups aka process containers and resource isolation through the namespaces.
Linux container
技术cgroups(control groups)
和namespaces
实现。两者的功能如下:
cgroups = limits how much you can use;
namespaces = limits what you can see (and therefore use)
Cgroups
限制了你能够拥有的资源,而namespces
限制了你能够看到的资源。
参考资料:
LXC;
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic。