docker

【docker 笔记】docker 容器相关整理

2019-05-15  本文已影响0人  58bc06151329

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

1. 概述

Namespaces

进程

[root@localhost sdcvm-engine-containers]# docker exec -ti `docker ps -a | grep sdcvm-postgres | awk '{ print $1 }'` /bin/bash
bash-4.2# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 May13 ?        00:00:00 /bin/bash /start-postgres.sh
root         8     1  0 May13 ?        00:00:42 /usr/bin/python2 /usr/bin/supervisord -n
root        15     0  1 10:42 ?        00:00:00 /bin/bash
root        22    15  0 10:42 ?        00:00:00 ps -ef

2. 原理

镜像分层

2.1 Chroot

默认目录结构

2.2 CGroups

资源共享 继承关系
[root@localhost sdcvm-engine-containers]# lssubsys -m
cpuset /sys/fs/cgroup/cpuset
cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls,net_prio /sys/fs/cgroup/net_cls,net_prio
blkio /sys/fs/cgroup/blkio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb
pids /sys/fs/cgroup/pids
[root@localhost cpu]# cat tasks 
1
2
3
5
7
8
9
10
11
12
......
[root@localhost docker.service]# pwd
/sys/fs/cgroup/cpu/system.slice/docker.service
[root@localhost docker.service]# ll
total 0
-rw-r--r--. 1 root root 0 May  9 13:40 cgroup.clone_children
--w--w--w-. 1 root root 0 May  9 13:40 cgroup.event_control
-rw-r--r--. 1 root root 0 May  9 13:40 cgroup.procs
-r--r--r--. 1 root root 0 May  9 13:40 cpuacct.stat
-rw-r--r--. 1 root root 0 May  9 13:40 cpuacct.usage
-r--r--r--. 1 root root 0 May  9 13:40 cpuacct.usage_percpu
-rw-r--r--. 1 root root 0 May  9 13:40 cpu.cfs_period_us
-rw-r--r--. 1 root root 0 May  9 13:40 cpu.cfs_quota_us
-rw-r--r--. 1 root root 0 May  9 13:40 cpu.rt_period_us
-rw-r--r--. 1 root root 0 May  9 13:40 cpu.rt_runtime_us
-rw-r--r--. 1 root root 0 May  9 13:40 cpu.shares
-r--r--r--. 1 root root 0 May  9 13:40 cpu.stat
-rw-r--r--. 1 root root 0 May  9 13:40 notify_on_release
-rw-r--r--. 1 root root 0 May  9 13:40 tasks
[root@localhost docker-93517129873be37967bdb1446eb9c12223bb6bb708cfc22cc3c7644cbb0bf02f.scope]# pwd
/sys/fs/cgroup/cpu/system.slice/docker-93517129873be37967bdb1446eb9c12223bb6bb708cfc22cc3c7644cbb0bf02f.scope
[root@localhost docker-93517129873be37967bdb1446eb9c12223bb6bb708cfc22cc3c7644cbb0bf02f.scope]# ll
total 0
-rw-r--r--. 1 root root 0 May 14 19:24 cgroup.clone_children
--w--w--w-. 1 root root 0 May 14 19:24 cgroup.event_control
-rw-r--r--. 1 root root 0 May 14 19:24 cgroup.procs
-r--r--r--. 1 root root 0 May 14 19:24 cpuacct.stat
-rw-r--r--. 1 root root 0 May 14 19:24 cpuacct.usage
-r--r--r--. 1 root root 0 May 14 19:24 cpuacct.usage_percpu
-rw-r--r--. 1 root root 0 May 14 19:24 cpu.cfs_period_us
-rw-r--r--. 1 root root 0 May 14 19:24 cpu.cfs_quota_us
-rw-r--r--. 1 root root 0 May 14 19:24 cpu.rt_period_us
-rw-r--r--. 1 root root 0 May 14 19:24 cpu.rt_runtime_us
-rw-r--r--. 1 root root 0 May 14 19:24 cpu.shares
-r--r--r--. 1 root root 0 May 14 19:24 cpu.stat
-rw-r--r--. 1 root root 0 May 14 19:24 notify_on_release
-rw-r--r--. 1 root root 0 May 14 19:24 tasks
CGroup 上下级关系
[root@localhost ]# docker run -it -d --cpu-quota=50000 busybox

CGroup 特点

aufs

overlay2

[root@localhost docker]# pwd
/var/lib/docker
[root@localhost docker]# ll
total 8
drwx------.  3 root root   78 May 14 19:24 containers
drwx------.  3 root root   22 May  7 18:26 image
drwxr-x---.  3 root root   19 May  7 18:26 network
drwx------. 20 root root 4096 May 14 19:24 overlay2
drwx------.  4 root root   32 May  7 18:26 plugins
drwx------.  2 root root    6 May  7 18:26 swarm
drwx------.  3 root root   37 May 13 13:45 tmp
drwx------.  2 root root    6 May  7 18:26 trust
drwx------. 27 root root 4096 May 13 13:45 volumes
{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
[root@localhost docker]# tree -L 3 image/
image/
└── overlay2
    ├── distribution
    ├── imagedb
    │   ├── content
    │   └── metadata
    ├── layerdb
    │   ├── mounts
    │   ├── sha256
    │   └── tmp
    └── repositories.json

9 directories, 1 file
[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sdcvm-postgres      latest              9b4a60d30e64        47 hours ago        445 MB
sdcos               sdcos7              9df994b93bcf        5 weeks ago         350 MB
[root@localhost sha256]# pwd
/var/lib/docker/image/overlay2/imagedb/content/sha256
[root@localhost sha256]# ll | grep 9b4a60d30e64
-rw-------. 1 root root 6316 May 13 13:45 9b4a60d30e64b8c7c48e436c38cefe7dabb6bd92aea95e8453c2a2c6754cf4d5
......
"rootfs":{"type":"layers","diff_ids":
[
"sha256:522eaa81ad19cff9d9d64c7511c6288dc9695306f3e4f496d0cbd3379f31b743",
"sha256:bba9c8b6f7bf7db18623881d535ed612033daecada485fbc1443f676ebe681d9",
"sha256:e5f61ba5d0872fea5d70e0edf94d5dd204017bc31dc00698425de060f394b963",
......
]}
......
[root@localhost 522eaa81ad19cff9d9d64c7511c6288dc9695306f3e4f496d0cbd3379f31b743]# pwd
/var/lib/docker/image/overlay2/layerdb/sha256/522eaa81ad19cff9d9d64c7511c6288dc9695306f3e4f496d0cbd3379f31b743
[root@localhost 522eaa81ad19cff9d9d64c7511c6288dc9695306f3e4f496d0cbd3379f31b743]# ll
total 740
-rw-r--r--. 1 root root     64 May  7 18:27 cache-id
-rw-r--r--. 1 root root     71 May  7 18:27 diff
-rw-r--r--. 1 root root      9 May  7 18:27 size
-rw-r--r--. 1 root root 741803 May  7 18:27 tar-split.json.gz
[root@localhost 522eaa81ad19cff9d9d64c7511c6288dc9695306f3e4f496d0cbd3379f31b743]# cat cache-id 
7c217baf83ec2dd3b91d18813f638a90c38683ce9890d4195ce7557fbd2c1005[root@localhost 522eaa81ad19cff9d9d64c7511c6288dc9695306f3e4f496d0cbd3379f31b743]#
[root@localhost overlay2]# pwd
/var/lib/docker/overlay2
[root@localhost overlay2]# ll | grep 7c217baf83ec2dd3b91d18813f638a90c38683ce9890d4195ce7557fbd2c1005
drwx------. 3 root root     30 May  7 18:27 7c217baf83ec2dd3b91d18813f638a90c38683ce9890d4195ce7557fbd2c1005
[root@localhost overlay2]# cd 7c217baf83ec2dd3b91d18813f638a90c38683ce9890d4195ce7557fbd2c1005/
[root@localhost 7c217baf83ec2dd3b91d18813f638a90c38683ce9890d4195ce7557fbd2c1005]# ll
total 4
drwxr-xr-x. 17 root root 224 May  7 18:27 diff
-rw-r--r--.  1 root root  26 May  7 18:27 link
[root@localhost 1067c0c749b276951102faf9b44b0cc6b3bc061d1560d739e95cc719368e9401]# ll
total 8
drwxr-xr-x. 3 root root  17 May 13 13:45 diff
-rw-r--r--. 1 root root  26 May 13 13:45 link
-rw-r--r--. 1 root root 115 May 13 13:45 lower
drwx------. 2 root root   6 May 13 13:45 merged
drwx------. 2 root root   6 May 13 13:45 work

merged、容器层(upperdir)、镜像层(lowerdir)之间的关系

merged、容器层(upperdir)、镜像层(lowerdir)之间的关系

3. 容器基础操作

操作 说明
attach 依附到正在运行的容器。
cp 本地文件系统与容器之间的文件或目录复制。
create 创建一个新的容器。
diff 检查容器差异。
events 实时获得服务端事件。
exec 在一个运行的容器里运行命令。
export 导出容器的文件系统到一个归档文件。
kill 杀掉一个运行中的容器。
logs 获取容器的日志。
pause 暂停容器内部所有进程。
port 输出容器的端口信息。
ps 显示容器列表。
rename 重命令一个容器。
restart 重启容器。
rm 删除一个容器。
run 运行一个容器。
start 启动一个或多个非运行状态的容器。
stats 实时显示容器的资源使用情况。
stop 停止正在运行的容器。
top 显示容器内正在运行的进程。
unpause 恢复容器内部所有进程。
update 更新一个或多个容器配置。
wait 阻塞直到容器停止,然后打印退出码。

3.1 依附容器(docker attach)

操作 说明
--detach-keys="" 覆盖键序列分离容器。可以是一个单独的字符 [a-z],也可以是 Ctrl-<value>,<value> 可以是 [a-z]、@、^、[、, 或者 _。
--help 打印帮助信息。
--no-stdin=true|false 不附加输入操作。默认为 false。
--sig-proxy=true|false 代理所有接受到的信号到进程中(仅限非 TTY 模式),SIGCHLD、SIGKILL 和 SIGSTOP 是非代理的,默认为 true。

3.2 复制(docker cp)

参数 说明
-L, --follow-link 保持源目标中的链接。
-a, --archive 存档模式(复制所有 uid/gid 信息)。
--help 帮助信息。
[root@localhost ~]# docker cp sharp_ptolemy:/tmp/foo/myfile.txt /test        //从容器到本地
[root@localhost ~]# docker cp /config/. myappcontainer:/etc/my-app.d         //从本地到容器

3.3 创建容器(docker create)

docker create 添加一个可读写层
常用参数 说明
-i, --interactive=false 打开 STDIN,用于控制台交互,通常与 -t 同时使用。
-t, --tty=false 为容器重新分配一个伪输入终端,通常与 -i 同时使用,默认为 false。
-u, --user="" 指定容器的用户。(用户名或者 UID)
-a, --attach=[] 登录容器(必须是以 docker run -d 启动的容器),可以选择 STDIN、STDOUT 或者 STDERR。
-w, --workdir="" 指定容器的工作目录。
-c, --cpu-shares=0 设置容器 CPU 权重,在 CPU 共享场景中使用。
-e, --env=[] 指定环境变量,容器中可以使用该环境变量。
-m, --memory="" 指定容器的内存上限。
-P, --publish-all=false 将所有公开端口发布到随机端口。
-p, --publish=[] 指定容器暴露的端口,默认为 [],端口映射,格式为:主机(宿主)端口:容器端口
-h, --hostname="" 指定容器的主机名。
-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录。
--volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录。
--cap-add=[] 添加权限。
--cap-drop=[] 删除权限。
--cidfile="" 运行容器后,在指定文件中写入容器 PID 值,一种典型的监控系统用法。
--cpuset="" 设置容器可以使用的 CPU,此参数可以用来容器独占 CPU。
--device=[] 添加主机设备给容器,相当于设备直通。
--dns=[] 指定容器的 dns 服务器。
--dns-search=[] 指定容器的 dns 搜索域名,写入到容器的 /etc/resolv.conf 文件。
--entrypoint="" 覆盖 image 的入口点。
--env-file=[] 指定环境变量文件,文件格式为每行一个环境变量。
--expose=[] 指定容器暴露的端口,即修改镜像的暴露端口。
--link=[] 指定容器间的关联,使用其他容器的 IP、env 等信息。
--lxc-conf=[] 指定容器的配置文件,只有在指定 --exec-driver=lxc 时使用。
--name="" 指定容器名字,后续可以通过名字进行容器管理,links 特性需要使用名字。
--net="bridge" 容器网络设置(bridge:使用 docker daemon 指定的网桥、host:容器使用主机的网络、container:NAME_or_ID:使用其他容器的网络,共享 IP 和 PORT 等网络资源、none:容器使用自己的网络(类似 --net=bridge),但是不进行配置。)
--privileged=false 指定容器是否为特权容器,特权容器拥有所有的 capabilities。
--restart="no" 指定容器停止后的重启策略,no:容器退出时不重启、on-failure:容器故障退出(返回值非零)时重启、always:容器退出时总是重启。
--rm=false 指定容器停止后自动删除容器(不支持以 docker run -d 启动的容器)。
--sig-proxy=true 设置由代理接受并处理信号,但是 SIGCHLD、SIGSTOP 和 SIGKILL 不能被代理。
--help 帮助信息。
-l, --label list 在容器上设置元数据(默认值为[])。
[root@localhost ~]# docker create  --name myrunoob  nginx:latest      
09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f

3.4 容器变化(docker diff)

参数 说明
--help 帮助信息
[root@localhost ~]# docker diff 1fdfd1f54c1b
C /dev
C /dev/console
C /dev/core
C /dev/stdout
C /dev/fd
C /dev/ptmx
C /dev/stderr
C /dev/stdin
C /run
A /run/nginx.pid
C /var/lib/nginx/tmp
A /var/lib/nginx/tmp/client_body
A /var/lib/nginx/tmp/fastcgi
A /var/lib/nginx/tmp/proxy
A /var/lib/nginx/tmp/scgi
A /var/lib/nginx/tmp/uwsgi
C /var/log/nginx
A /var/log/nginx/access.log
A /var/log/nginx/error.log

3.5 容器事件(docker events)

参数 说明
-f, --filter filter 根据条件过滤事件。
--format string 使用给定的模板格式化输出。
--help 帮助信息。
--since string 从指定的时间戳后显示所有事件。
--until string 流水时间显示到指定的时间为止。

filter

[root@localhost ~]# docker events --since '2015-01-28'
2015-01-28T20:25:38.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) create
2015-01-28T20:25:38.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) start
2015-01-28T20:25:39.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) create
2015-01-28T20:25:39.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) start
2015-01-28T20:25:40.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) die
2015-01-28T20:25:42.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) stop
2015-01-28T20:25:45.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) start
2015-01-28T20:25:45.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) die
2015-01-28T20:25:46.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) stop
[root@localhost ~]# docker events --filter 'type=container' --format 'Type={{.Type}}  Status={{.Status}}  ID={{.ID}}'
Type=container  Status=create  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=attach  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
 Type=container  Status=start  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=resize  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=die  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=destroy  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26

3.6 进入容器(docker exec)

docker exec
参数 说明
-d, --detach 分离模式,在后台运行。默认 false。
--detach-keys string 覆盖键序列分离容器。可以是一个单独的字符 [a-z],也可以是 Ctrl-<value>,<value> 可以是 [a-z]、@、^、[、, 或者 _。
-e, --env=[] 指定环境变量,容器中可以使用该环境变量。
--help 帮助信息。
-i, --interactive 即使没有附加也保持 STDIN 打开。
--privileged 授予命令扩展权限。默认 false。
-t, --tty 分配一个伪终端。
-u, --user="" 指定容器的用户。(用户名或者 UID)
[root@localhost ~]# docker exec -i -t  mynginx /bin/bash
root@b1a0703e41e7:/#

3.7 导出容器(docker export)

docker export
参数 说明
-o, --output string 将输出内容写到文件,而不是 STDOUT。
--help 帮助信息。
[root@localhost ~]# docker export angry_bell > angry_bell.tar
[root@localhost ~]# docker export --output=angry_bell-latest.tar angry_bell

3.8 杀掉运行容器(docker kill)

docker kill
参数 说明
--help 帮助信息。
-s, --signal="KILL" 指定发送信号,默认为 KILL。
[root@localhost ~]# docker kill -s KILL mynginx
mynginx
[root@localhost ~]# docker kill --signal=SIGHUP my_container
[root@localhost ~]# docker kill --signal=HUP my_container
[root@localhost ~]# docker kill --signal=1 my_container

3.9 查看容器日志(docker logs)

参数 说明
--help 帮助信息。
--details=true|false 显示详细日志信息。
-f, --follow=true|false 跟踪日志输出(持续输出),默认 false。
--since="" 显示某个开始时间的所有日志。
-t, --timestamps=true|false 显示时间戳,默认 false。
--tail="all" 仅列出最新 N 条容器日志,默认 all。
[root@localhost ~]# docker logs -f mynginx
192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
2016/07/10 16:53:33 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.239.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.239.130", referrer: "http://192.168.239.130/"
192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.239.130/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
192.168.239.1 - - [10/Jul/2016:16:53:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
...

3.10 暂停容器(docker pause)

docker pause
参数 说明
--help 帮助信息。
[root@localhost ~]# docker pause db01

3.11 查看端口信息(docker port)

参数 说明
--help 帮助信息。
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
b650456536c7        busybox:latest      top                 54 minutes ago      Up 54 minutes       0.0.0.0:1234->9876/tcp, 0.0.0.0:4321->7890/tcp   test
[root@localhost ~]# docker port test
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
[root@localhost ~]# docker port test 7890/tcp
0.0.0.0:4321
[root@localhost ~]# docker port test 7890
0.0.0.0:4321

3.12 查看本地容器信息(docker ps)

docker ps
参数 说明
-a, --all=true|false 列出所有容器。默认为 false,只列出了正在运行的容器。
-f, --filter=[] 根据条件过滤事件。
--format="TEMPLATE" 使用给定的模板格式化输出。
-l, --latest=true|false 仅显示最新创建的容器(包括所有状态),默认为 false。
-n=-1 显示最近创建的 N 个容器(包括所有状态)。
--no-trunc=true|false 不截断输出,默认为 false。
-q, --quiet=true|false 静默输出,只显示容器编号。
-s, --size=true|false 显示总的文件大小。
--help 帮助信息。

filter

format

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
1c4bb11dfdb3        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                       eloquent_minsky
acbc7fa4cb8c        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       sleepy_mccarthy
f77dbc06cf99        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       amazing_cori
d2a233491403        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       sleepy_allen
2567131e0130        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       competent_turing
[root@localhost ~]# docker ps -a -q
1c4bb11dfdb3
acbc7fa4cb8c
f77dbc06cf99
d2a233491403
2567131e0130

3.13 重命名容器(docker rename)

[root@localhost ~]# docker rename my_container my_new_container

3.14 重启容器(docker restart)

参数 说明
--help 帮助信息。
-t, --time=10 kill 容器之前尝试停止的秒数(宽限期),一旦容器 kill,将重新启动,默认为 10 秒。
[root@localhost ~]# docker restart my_container

3.15 删除容器(docker rm)

docker rm
参数 说明
--help 帮助信息。
-f, --force=true|false 强制删除一个正在运行的容器(使用 SIGKILL),默认为 false。
-l, --link=true|false 删除容器间的关联,而不删除基础容器。默认为 false。
-v, --volumes=true|false 删除与容器关联的卷(默认删除容器不会删除卷),默认为 false。
[root@localhost ~]# docker rm /redis
[root@localhost ~]# docker rm --link /webapp/redis
[root@localhost ~]# docker rm --force redis
[root@localhost ~]# docker rm $(docker ps -a -q)
[root@localhost ~]# docker rm -v redis

3.16 运行容器(docker run)

docker run docker run 命令流程
常用参数 说明
-d, --detach=false 后台运行容器,并返回容器 ID。
--read-only=true|false 将容器的根文件系统安装为只读。
[root@localhost ~]# docker run --read-only --tmpfs /run --tmpfs /tmp -i -t fedora /bin/bash

退出状态

退出码 说明
125 错误发生在 Docker 守护进程本身。
126 容器命令执行失败(例如没有权限)。
127 容器命令不能找到。

3.17 启动容器(docker start)

docker start
参数 说明
--help 帮助信息。
-a, --attach=true|false 附加容器的 STDOUT、STDERR 和转发的所有信号到进程中。默认为 false。
--detach-keys="" 覆盖键序列分离容器。可以是一个单独的字符 [a-z],也可以是 Ctrl-<value>,<value> 可以是 [a-z]、@、^、[、, 或者 _。
-i, --interactive=false 即使没有附加也保持 STDIN 打开。默认为 false。
--checkpoint 从此检查点还原。
--checkpoint-dir 使用自定义检查点存储目录。
[root@localhost ~]# docker start my_container

3.18 查看容器状态(docker stats)

参数 说明
--help 帮助信息。
--all , -a 显示所有容器状态信息(默认只显示运行状态)。
--no-stream=true|false 禁用流式处理状态并只拉取第一个返回,默认为 false。
--format="TEMPLATE" 使用给定的模板格式化输出。
--no-trunc 显示完整的描述。

format

[root@localhost ~]# docker stats
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O
1285939c1fd3        0.07%               796 KiB / 64 MiB        1.21%               788 B / 648 B       3.568 MB / 512 KB
9c76f7834ae2        0.07%               2.746 MiB / 64 MiB      4.29%               1.266 KB / 648 B    12.4 MB / 0 B
d1ea048f04e4        0.03%               4.583 MiB / 64 MiB      6.30%               2.854 KB / 648 B    27.7 MB / 0 B

3.19 停止容器(docker stop)

docker stop
参数 说明
--help 帮助信息。
-t, --time=10 在 kill 容器之前等待容器停止的秒数(宽限期)。默认值为 10 秒。
[root@localhost ~]# docker stop my_container

3.20 查看容器进程(docker top)

[root@localhost ~]# docker top 8601afda2b -x
PID      TTY       STAT       TIME         COMMAND
16623    ?         Ss         0:00         sleep 99999

3.21 恢复容器(docker unpause)

参数 说明
--help 帮助信息。
[root@localhost ~]# docker unpause db01

3.22 更新容器(docker update)

参数 说明
--help 帮助信息。
--blkio-weight=0 块 IO 权重,范围 10~1000。
--cpu-shares=0 CPU 共享。
--cpu-period=0 限制 CPU CFS(完全公平调度程序)周期。限制容器的 CPU 使用。这个标志告诉内核将容器的 CPU 使用限制在指定的时间段内。
--cpu-quota=0 限制 CPU CFS 配额。
--cpu-rt-period=0 以微秒为单位限制 CPU 的实时周期,限制容器的实时CPU使用。这个标志告诉内核将容器的实时 CPU 使用限制在指定的时间段内。
--cpu-rt-runtime=0 以微秒为单位限制 CPU 实时运行时间,限制容器的实时 CPU 使用。此标志告诉内核限制给定 CPU 周期内实时任务可能消耗的时间量。跨容器的所有运行时的总和不能超过分配给父 cgroup 的额度。
--cpuset-cpus="" 允许执行的 CPU(0-3、0、1)。
--cpuset-mems="" 允许执行的内存节点(mems)(0-3、0、1)。仅对 NUMA 系统有效。
--kernel-memory="" 内核内存限制(格式:<number>[<unit>],单位可以为 b,k,m 和 g)。
-m, --memory="" 内存限制(格式:<number>[<unit>],单位可以为 b,k,m 和 g)。
--memory-reservation="" 内存软限制(格式:<number>[<unit>],单位可以为 b,k,m 和 g)。
--memory-swap="" 总内存限制(内存 + 交换)。
--restart="" 容器退出时要应用的重新启动策略(no(不重启)、on-failure[:max-retry](失败时:最大重试数)、always(始终重启)、unless-stopped(除非停止))。
[root@localhost ~]# docker update --cpu-shares 512 -m 300M abebf7571666 hopeful_morse
[root@localhost ~]# docker update --kernel-memory 80M test
[root@localhost ~]# docker update --restart=on-failure:3 abebf7571666 hopeful_morse

--memory

3.23 设置等待(docker wait)

参数 说明
--help 帮助信息。
[root@localhost ~]# docker run -d fedora sleep 99
079b83f558a2bc52ecad6b2a5de13622d584e6bb1aea058c11b36511e85e7622
[root@localhost ~]# docker wait 079b83f558a2bc
0
上一篇 下一篇

猜你喜欢

热点阅读