Docker学习笔记(二)docker容器基本使用

一、容器的基本使用

1、docker container命令的参数:

[root@master ~]# docker container
Usage:	docker container COMMAND
Manage containers
Commands:
attach      Attach local standard input, output, and error streams to a running container
commit      Create a new image from a container's changes
cp          Copy files/folders between a container and the local filesystem
create      Create a new container
diff        Inspect changes to files or directories on a container's filesystem
exec        Run a command in a running container
export      Export a container's filesystem as a tar archive
inspect     Display detailed information on one or more containers
kill        Kill one or more running containers
logs        Fetch the logs of a container
ls          List containers
pause       Pause all processes within one or more containers
port        List port mappings or a specific mapping for the container
prune       Remove all stopped containers
rename      Rename a container
restart     Restart one or more containers
rm          Remove one or more containers
run         Run a command in a new container
start       Start one or more stopped containers
stats       Display a live stream of container(s) resource usage statistics
stop        Stop one or more running containers
top         Display the running processes of a container
unpause     Unpause all processes within one or more containers
update      Update configuration of one or more containers
wait        Block until one or more containers stop, then print their exit codes

Run 'docker container COMMAND --help' for more information on a command.

初次启动一个nginx容器,使用docker run或docker container run,再来了解一下docker run:

[root@master ~]# docker run
"docker run" requires at least 1 argument.
See 'docker run --help'.

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Docker run参数:
-d,-d=true       在后台模式(或者直接使用-d)
-a, --attach=[]   连接容器的stdin、stdout、stderr (默认连接这三个流)
-t, --tty=false    使用终端。经常和 -i一起使用。
--sig-proxy=true   代理所有收到的系统信息(我测试了一下好像没有作用)
-i, --interactive=false   打开STDIN和容器交互。经常和 -t一起使用。
-p 手动指定端口映射,如-p 80:80
-P 系统随机指定端口映射

比如启动一个nginx容器:

[root@master ~]# docker run -itd -P --name nginx docker.io/nginx /bin/bash
19f8da31319adae9d183a7ecca7e9c2e4245ebef126fcf37f9715a847cb5c499

停止一个容器:

[root@master ~]# docker stop nginx

启动一个容器:

[root@master ~]# docker start nginx

重启一个容器:

[root@master ~]# docker restart nginx

删除一个容器:

[root@master ~]# docker rm ID

二、资源控制

1、内存限额

与操作系统类似,容器可使用内存分为物理内存和swap,docker可使用下面两个参数控制容器的内存:
(1)-m或—memory,设置内存限额,比如100M,2GB;
(2)–memory-swap,设置内存+swap的使用限额,只有在—memory设置时才有意义;
例:启动一个容器,内存限额为200M,内存加上swap一共300M

[root@master ~]# docker run -itd -P --name nginx -m 200M --memory-swap 300M  docker.io/nginx 

若不添加以上两组参数,默认资源没有限制。
如果–memory-swap 设置为0,则忽略该设置,并将该值视为未设置;
如果–memory-swap 设置为与值相同的值–memory,并且–memory设置为正整数,则容器无权访问swap。
若只制定–memory,而不指–memory-swap,则–memory-swap大小默认为–memory的两倍,如:

[root@master ~]# docker run -itd -P --name nginx -m 200M docker.io/nginx

利用progrium/stress景象进行压力测试,资源限额200M,内存+swap为300M,使用一个线程,并且一个线程分配超过300M内存:

[root@master ~]# docker run -it -m 200M --memory-swap 300M progrium/stress --vm 1 --vm-bytes 350M
stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [1] using backoff sleep of 3000us
stress: dbug: [1] --> hogvm worker 1 [6] forked
stress: dbug: [6] allocating 367001600 bytes ...
stress: dbug: [6] touching bytes in strides of 4096 bytes ...
stress: FAIL: [1] (416) <-- worker 6 got signal 9
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (422) kill error: No such process
stress: FAIL: [1] (452) failed run completed in 1s

可以看到–vm-bytes 350M超过了–memory-swap 300M,所以提示kill error: No such process,进程直接结束了。

2、CPU限额

默认情况下,每个容器对主机CPU周期的访问权限是不受限制的。
docker 提供了–cpu-period、–cpu-quota两个参数控制容器可以分配到的 CPU 时钟周期。 --cpu-period是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配。
–cpu-quota是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。跟 –cpu-shares 不同的是这种配置是指定一个绝对值,而且没有弹性在里面,容器对 CPU 资源的使用绝对不会超过配置的值。
使用示例:[ cpu-period 设置为1000000(即1秒),cpu-quota 设置为 200000(0.2秒)]
docker run -tid --cpu-period 100000 --cpu-quota 200000 ubuntu

限制CPU个数:
在 docker 1.13 及更高的版本上,能够很容易的限制容器可以使用的主机 CPU 个数。只需要通过 --cpus 选项指定容器可以使用的 CPU 个数就可以了,并且还可以指定如 1.5 之类的小数。

通过下面的命令创建容器,–cpus=2 表示容器最多可以使用主机上两个 CPU:

docker run -it --rm --cpus=1.5 ubuntu:16.04 /bin/bash

使用特定0-1的cpu:

docker run -idt --name a1 --cpuset-cpus=0-1 ubuntu:18.04 /bin/bash
发布了21 篇原创文章 · 获赞 6 · 访问量 2849

猜你喜欢

转载自blog.csdn.net/weixin_43334786/article/details/105407393