1 、创建容器
1.1 新建容器
docker create [option] IMAGE_NAME:IMAGE_TAG
创建停止状态的容器,并生成容器ID(CONTAINER_ID)。
docker start CONTAINER_ID
启动上述容器。
选项主要分为运行模式、环境配置、资源限制&安全保护三类,非常多,边用边记。
create命令以及容器运行模式的选项如下:
选项 | 说明 |
---|---|
-a=[ ] | attach 模式,是否绑定到标准输入、输出和错误 |
-d=true或false | 是否守护模式运行容器,默认为否 |
–detach-keys="" | attach 模式退出的快捷键 |
–entrypoint="" | 镜像存在人口命令时,覆盖为新的命令 |
–expose=[ ] | 指定容器会暴露出来的端口或端口范围 |
–group-add=[ ] | 运行容器的用户组 |
-i=true或false | interactive;保持标准输入打开,默认为 false |
–ipc="" | 容器 lPC 名空间,可以为其他容器或主机。IPC意思为进程间通信 |
–isolation=”default ” | 容器使用的隔离机制 |
–log-driver="json-file ” | 指定容器的日志驱动类型,json-file、 syslog、journald、gelf、fluentd 、awslogs、splunk、etwlogs、gcplogs、none |
–log-opt=[ ] | 传递给日志驱动的选项 |
–net= "bridge " | 指定容器网络模式,包括 bridge 、none 、其他容器内网络、 host网络或某个现有网络等 |
–net-alias=[ ] | 容器在网络中的别名 |
-P=true或false | 通过 NAT 机制将容器标记暴露的端口自动映射到本地主机的临时端口 |
-p=[ ] | 指定如何|决射到本地主机端口,例如 -p 11234- 12234:1234-2234 |
–pid=host | 容器的PID命名空间 |
–userns="" | 启用 userns-remap 配置用户命名空间的模式 |
–uts=host | 容器的UTS命名空间,UTS:UNIX分时操作系统 |
–restart=“no” | 容器的重启策略,包括 no、on- failure [:max-retry]、always、 unless-stopped |
–rm=true或false | 容器退出后是否自动删除,不能跟-d同时使用 |
-t=true或false | tty;是否分配一个伪终端,默认为 false |
–tmpfs=[ ] | 挂载临时文件系统到容器 |
-v[=[ [ 宿主机路径:] 容器路径[:选项] ] ] | 挂载主机上的文件卷到容器内 |
–volume-driver=" ” | 挂载文件卷的驱动类型 |
–volume-from=[ ] | 从其他容器挂在卷 |
-w="" | 容器内的默认工作目录 |
create 命令与容器环境和配置相关的选项
选项 | 说明 |
---|---|
–add-host=[ ] | 在容器内添加一个主机名到 IP 地址的映射关系(通过/etc/hosts文件) |
–device=[ ] | 映射物理机上的设备到容器内 |
–dns-search=[ ] | DNS搜索域 |
–dns-opt=[ ] | 自定义DNS选项 |
–dns=[ ] | 自定义DNS服务器 |
-e=[ ] | environment;指定容器内的环境变量 |
–env-file=[ ] | 从文件中读取环境变量到容器内 |
-h="" | hostname;指定容器内的主机名 |
–ip="" | 指定容器的IPV4地址 |
–ip6="" | 指定容器的IPV6地址 |
–link=[:alias] | 通过容器名/容器ID,链接到其他容器 |
–link-local-ip=[ ]: | 容器的本地链接地址列表 |
–mac-address="" | 指定容器的Mac地址 |
–name="" | 指定容器别名 |
create 命令与容器资源限制和安全保护相关的选项
选项 | 说明 |
---|---|
–blkio-weight | 容器读写块设备的I/O性能权重,默认为0 |
–blkio-weight-device=[DEVICE_NAME:WEIGHT] | 指定各个块设备的I/O性能权重 |
–cpu-shares=0 | 允许容器使用 CPU 资源的相对权重,默认一个容器能用满一个核的CPU |
–cap-add=[ ] | 增加容器的 Linux 指定安全能力 |
–cap-drop=[ ] | 移除容器的 Linux 指定安全能力 |
–cgroup-parent="" | 容器 cgroups 限制的创建路径 |
–cidfile="" | 指定容器的进程 ID 号写到文件 |
–cpu-period=0 | 限制容器在 CFS 调度器下的 CPU 占用时间片 |
–cpuset-cpus="" | 限制容器能使用哪些 CPU 核心 |
–cpuset-mems="" | NUMA 构下使用哪些核心的内存 |
–cpu-quota=0 | 限制容器在 CFS调度器下的 CPU 配额 |
–device-read-bps=[ ] | 挂载设备的读吞吐率(以 bps 为单位)限制 |
–device-write-bps=[ ] | 挂载设备的写吞吐率(以 bps 为单位)限制 |
–device-read-iops=[ ] | 挂载设备的读速率(以每秒 i/o 次数为单位)限制 |
–device-write-iops=[ ] | 挂载设备的写速率(以每秒 i/o 次数为单位)限制 |
–health-cmd="" | 指定检查容器健康状态的命令 |
–health-interval=0s | 执行健康检查的间隔时间,单位可以为 ms、s、m、h |
–health-retries=int | 健康检查失败重试次数,超过则认为不健康 |
–health-start-period=0s | 容器启动后进行健康检查的等待时间 单位可以为 ms、s、m、h |
–health-timeout=0s | 健康检查的执行超时,单位可以为ms、s、m、h |
–no-healthcheck=true或false | 是否禁用健康检查 |
–init | 在容器中执行一个init进程,来负责响应信号和处理僵尸状态子进程 |
–kernel-memory=“” | 限制容器使用内核的内存大小, 单位可以是b、k、m、g |
-m="" | 限制容器内应用的内存大小 , 单位可以是b、k、m、g |
–memory-reservation="" | 当系统中内存过低时, 容器会被强制限制内存给定值,默认情况下等于内存限制值 |
–memory-swap=“LIMIT” | 限制容器使用内存和交换区的总大小 |
–oom-kill-disable=true或false | 内存耗尽时是否杀死容器 |
–oom-score-adj="" | 调整容器的内存耗尽参数 |
–pid-limit="" | 限制容器的pid进程个数 |
–privileged=true或false | 是否给容器最高权限,这意味着容器内应用将不受权限的限制, 不推荐 |
–read-only=true或false | 是否让容器内的文件系统只读 |
–security-opt=true或false | 指定一些安全参数,包括权限、安全能力、apparmor等 |
–stop-signal=SIGTERM | 指定停止容器的系统信号 |
–shm-size="" | /dev/shm的大小 |
–sig-proxy=true或false | 是否代理收到的信号给应用 ,默认为true,不能代理 SIGCHLD、SIGSTOP、KILL 信号 |
–memory-swappiness=“0~100” | 调整容器的内存交换区参数 |
-u="" | 指定在容器内执行命令的用户信息 |
–userns | 指定用户的命名空间 |
–ulimit=[ ] | 通过ulimit来限制最大文件数、最大进程数 |
-l=[ ] | label;以键值对方式指定容器的标签信息 |
–label-file=[ ] | 从文件中读取标签信息 |
[root@aliyun data]# docker images cent*
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 300e315adb2f 8 months ago 209 MB
[root@aliyun data]# docker create -it --kernel-memory="125m" -m="68m" --blkio-weight=0 --read-only=false centos:latest
563435e882ec0f3f200f9d56acdb591152603e39e9c89f590f716dcff4cc265c
[root@aliyun data]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 32 seconds ago Created
1.2 启动容器
docker start CONTAINER_ID
上一小结create创建的容器还是Created,需要通过start指令启动才能运行。
[root@aliyun data]# docker start 563435e882ec
563435e882ec
[root@aliyun data]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 2 minutes ago Up 2 seconds
1.3 新建并启动容器
docker run [option] IMAGE_NAME:IMAGE_TAG
该命令在后台运行的标准操作有:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
- 利用镜像创建一个容器,并启动该容器;
- 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
- 从网桥的地址池配置一个 IP 地址给容器;
- 执行用户指定的应用程序;
- 执行完毕后容器被自动终止;
启动并且进入容器内的伪bash客户端(宿主机上是root,容器默认也是root用户):
docker run -it IMAGE_NAME:IMAGE_TAG /bin/bash
[root@aliyun data]# docker run -it centos:latest /bin/bash
[root@a6feeb6d1f68 /]# pwd
/
[root@a6feeb6d1f68 /]# ls -lh
total 48K
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 360 Aug 20 14:13 dev
drwxr-xr-x 1 root root 4.0K Aug 20 14:13 etc
drwxr-xr-x 2 root root 4.0K Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 4.0K Dec 4 2020 lost+found
drwxr-xr-x 2 root root 4.0K Nov 3 2020 media
drwxr-xr-x 2 root root 4.0K Nov 3 2020 mnt
drwxr-xr-x 2 root root 4.0K Nov 3 2020 opt
dr-xr-xr-x 146 root root 0 Aug 20 14:13 proc
dr-xr-x--- 2 root root 4.0K Dec 4 2020 root
drwxr-xr-x 1 root root 4.0K Aug 20 14:13 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 4.0K Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Jul 14 13:23 sys
drwxrwxrwt 7 root root 4.0K Dec 4 2020 tmp
drwxr-xr-x 12 root root 4.0K Dec 4 2020 usr
drwxr-xr-x 20 root root 4.0K Dec 4 2020 var
[root@a6feeb6d1f68 /]# ps -aux |grep -v ps
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 12012 2216 ? Ss 14:13 0:00 /bin/bash
ps:退出容器,可以在伪终端上 CTRL+d 或 键入 exit
对于所创建的 bash 容器,当用户使用 exit 命令退出 bash 进程之后,容器也会自动退出。这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了。
run常见错误码:
- 125:Docker daemon 执行出错,例如指定了不支持的 Docker 命令参数;
- 126:所指定命令无法执行,例如权限出错;
- 127:容器内命令无法找到;
1.4 守护模式运行
docker run -d IMAGE_NAME:IMAGE_TAG
[root@aliyun data]# docker run -d centos:latest /bin/bash -c "while true; do echo lfc..; sleep 1; done"
1c2750118ce2d77e9bb2dc8e4ae3e62882816cbfd193dd2b4f130ad782b5d97
[root@aliyun data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c2750118ce2 centos:latest "/bin/bash -c 'whi..." 4 seconds ago Up 3 seconds sharp_volhard
[root@aliyun data]# docker logs 1c2750118ce2
lfc..
lfc..
1.5 查看容器输出
docker logs CONTAINER_ID
选项 | 说明 |
---|---|
–details | 打印详细信息 |
-f | fllow;继续保持输出 |
–since="" | 格式如2021-08-20T14:34:40.135017000Z;输出从某个时间戳之后的日志 |
–tail=“all” | 输出最近的若干行日志 |
-t | timestamp;显示时间戳 |
–until | 输出某个时间之前的日志 |
杨保华大牛的书中选项都是-有误,有几个参数应该是–的,疑惑之时需要习惯man命令或者help查阅一下。
[root@aliyun data]# docker logs --details -t 1c2750118ce2 |head
2021-08-20T14:34:38.116291000Z lfc..
2021-08-20T14:34:39.132919000Z lfc..
2021-08-20T14:34:40.135017000Z lfc..
2021-08-20T14:34:41.137588000Z lfc..
2021-08-20T14:34:42.139256000Z lfc..
2021-08-20T14:34:43.141315000Z lfc..
2021-08-20T14:34:44.143411000Z lfc..
2021-08-20T14:34:45.145573000Z lfc..
2021-08-20T14:34:46.147593000Z lfc..
2021-08-20T14:34:47.149688000Z lfc..
[root@aliyun data]# docker logs --details -t --since="2021-08-20T14:34:40.135017000Z" 1c2750118ce2 |head
2021-08-20T14:34:40.135017000Z lfc..
2021-08-20T14:34:41.137588000Z lfc..
2021-08-20T14:34:42.139256000Z lfc..
2021-08-20T14:34:43.141315000Z lfc..
2021-08-20T14:34:44.143411000Z lfc..
2021-08-20T14:34:45.145573000Z lfc..
2021-08-20T14:34:46.147593000Z lfc..
2021-08-20T14:34:47.149688000Z lfc..
2021-08-20T14:34:48.151756000Z lfc..
2021-08-20T14:34:49.153710000Z lfc..
[root@aliyun data]# docker logs --details -t --tail=5 1c2750118ce2
2021-08-20T14:41:37.115065000Z lfc..
2021-08-20T14:41:38.117108000Z lfc..
2021-08-20T14:41:39.119421000Z lfc..
2021-08-20T14:41:40.121367000Z lfc..
2021-08-20T14:41:41.123727000Z lfc..
2、 停止容器
2.1 暂停容器
暂停:docker pause CONTAINER_ID
恢复:docker unpause CONTAINER_ID
[root@aliyun data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" About an hour ago Up About an hour (Paused) ecstatic_pike
[root@aliyun data]# docker pause 563435e882ec
563435e882ec
[root@aliyun data]# docker unpause 563435e882ec
563435e882ec
2.2 终止容器
停止:docker stop CONTAINER_ID
先停止再启动:docker restart CONTAINER_ID
[root@aliyun data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" About an hour ago Up About an hour ecstatic_pike
[root@aliyun data]# docker stop 563435e882ec
563435e882ec
[root@aliyun data]# docker start 563435e882ec
563435e882ec
[root@aliyun data]# docker restart 563435e882ec
563435e882ec
3、进入容器
3.1 attach 命令
docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER_ID
选项 | 说明 |
---|---|
–detach-keys[=[]] | 指定退出 attach 模式的快捷键序列, 默认是 CTRL-p和CTRL-q |
–no-stdin=true或false | 是否关闭标准输入,默认打开 |
–sig-proxy=true或false | 是否代理收到的系统信号给应用进程,默认true |
[root@aliyun ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 43 hours ago Up 42 hours ecstatic_pike
[root@aliyun ~]# docker attach 563435e882ec
[root@563435e882ec /]#
3.2 exec 命令(更加常用)
docker exec [-d] [-i] [-t] [-u[=user]] [--privileged] [--detach-keys[=[]]] CONTAINER_ID COMMAND [ARG...]
选项 | 说明 |
---|---|
-d | detach;在容器后台执行命令 |
–detach-keys="" | 指定容器切回后台的命令 |
-e=[ ] | 指定环境变量列表 |
-i=true或false | interactive;打开标准输入接收用户输入指令,默认为false |
–privileged=true或false | 是否给执行命令以高权限,默认false |
-t=true或false | 分配伪终端,默认为false |
-u="" | 执行命令的用户名或者ID |
[root@aliyun ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 44 hours ago Up 6 minutes ecstatic_pike
[root@aliyun ~]# docker exec -it 563435e882ec /bin/bash
[root@563435e882ec /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:54 ? 00:00:00 /bin/bash
root 14 0 0 10:01 ? 00:00:00 /bin/bash
root 27 14 0 10:01 ? 00:00:00 ps -ef
4、删除容器
docker rm [-f] [-l] [-v] CONTAINER_ID
选项 | 说明 |
---|---|
-f=false | force;是否强制终止并删除,Docker 会先发送 系统信号SIGKILL信号给容器,终止其中的应用,之后强行删除 |
-l=false | link;删除容器的连接,但是保留容器 |
-v=false | volume;删除容器所挂载的数据卷 |
5、导入和导出容器
5.1 导出容器
导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行
状态。
docker export -o fileName CONTAINER_ID
[root@aliyun dockerStudy]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 44 hours ago Up 18 minutes ecstatic_pike
[root@aliyun dockerStudy]# docker export -o lfcCentos.tar 563435e882ec
[root@aliyun dockerStudy]# ll
total 211476
-rw------- 1 root root 216547328 Aug 22 18:12 lfcCentos.tar
5.2 导入容器(本质是导入容器的镜像)
docker import -c[=[]] -m[=MESSAGE] fileName [REPOSITORY[:TAG]]
选项 | 说明 |
---|---|
-c=[ ] | change;对容器进行修改的Dockerfile指令 |
-m | messge;相关导入说明 |
[root@aliyun dockerStudy]# docker import -m="The centos system for lfc" lfcCentos.tar lfc/centos:v1.0
sha256:b90073757875861d2d06f80423ae8daacbd4adc9e50d6047b94da5ab92d55241
[root@aliyun dockerStudy]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lfc/centos v1.0 b90073757875 30 seconds ago 209 MB
容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),
而镜像存储文件将保存完整记录,体积更大。
6、查看容器
6.1 查看容器详情
docker container inspect CONTAINER_ID
[root@aliyun dockerStudy]# docker container inspect 563435e882ec
[
{
"Id": "563435e882ec0f3f200f9d56acdb591152603e39e9c89f590f716dcff4cc265c",
"Created": "2021-08-20T13:52:50.894293891Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 17919,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-08-22T09:54:09.761844106Z",
"FinishedAt": "2021-08-22T09:48:40.444275375Z"
},
......
]
6.2 查看容器内的进程
docker top CONTAINER_ID
[root@aliyun dockerStudy]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 45 hours ago Up About an hour ecstatic_pike
[root@aliyun dockerStudy]# docker top 563435e882ec
UID PID PPID C STIME TTY TIME CMD
root 17919 17905 0 17:54 pts/1 00:00:00 /bin/bash
6.3 查看统计信息
docker stats [OPTIONS] CONTAINER_ID 子命令
选项 | 说明 |
---|---|
-a | 输出所有容器的统计信息 |
–format="" | 格式化输出,采用golang的模板 |
–no-stream | 不持续输出,默认会自动更新持续实时结果 |
[root@aliyun dockerStudy]# docker stats 563435e882ec
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
563435e882ec 0.00% 1.25 MiB / 68 MiB 1.84% 126 kB / 656 B 6.49 MB / 0 B 1
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
563435e882ec 0.00% 1.25 MiB / 68 MiB 1.84% 126 kB / 656 B 6.49 MB / 0 B 1
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O
7、其他常用容器命令
7.1 复制文件(或目录)
docker cp [OPTIONS] HOST_DIR_FILE CONTAINER_ID:PATH
选项 | 说明 |
---|---|
-a | archive;打包模式,复制文件会带有原始的uid/gid |
-L | 跟随软链接。当原路径为软连接时,默认只复制链接信息,使用该选项会复制链接的目标内容 |
[root@aliyun dockerCopyDir]# tree -L 3 /tmp/
/tmp/
├── dockerCopyDir
│ ├── a.log
│ └── b.log
├── dockerCopyFile.log
[root@aliyun tmp]# ll
total 12
drwxr-xr-x 2 root root 4096 Aug 22 19:28 dockerCopyDir
-rw-r--r-- 1 root root 15 Aug 22 19:27 dockerCopyFile.log
[root@aliyun tmp]# chown nginx:nginx dockerCopyFile.log
[root@aliyun tmp]# cat /etc/passwd
nginx:x:996:993:nginx user:/var/cache/nginx:/sbin/nologin
[root@aliyun tmp]# docker cp -a /tmp/dockerCopyFile.log 563435e882ec:/tmp
[root@aliyun tmp]# docker cp /tmp/dockerCopyDir/ 563435e882ec:/tmp
[root@aliyun tmp]# docker exec -it 563435e882ec /bin/bash
[root@563435e882ec /]# ls -l /tmp/
total 16
drwxr-xr-x 2 root root 4096 Aug 22 11:28 dockerCopyDir
-rw-r--r-- 1 996 993 15 Aug 22 11:27 dockerCopyFile.log
7.2 查看变更
docker diff CONTAINER_ID
[root@aliyun tmp]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 45 hours ago Up About an hour ecstatic_pike
[root@aliyun tmp]# docker diff 563435e882ec
C /root
A /root/.bash_history
C /run
D /run/secrets
C /tmp
D /tmp/dockerCopyDir
A /tmp/dockerCopyDir/a.log
A /tmp/dockerCopyDir/b.log
A /tmp/dockerCopyFile.log
7.3 查看端口映射
docker port CONTAINER_ID
注意该命令只有在容器运行状态下才会有结果。
[root@aliyun tmp]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 45 hours ago Up About an hour ecstatic_pike
570c98d0654d nginx "/docker-entrypoin..." 5 days ago Up 19 seconds 0.0.0.0:8080->80/tcp myNginx
[root@aliyun tmp]# docker port 570c98d0654d
80/tcp -> 0.0.0.0:8080
7.4 更新配置
更新容器的一些运行时配置,主要是资源限制份额。
docker update [OPTIONS] CONTAINER_ID
选项 | 说明 |
---|---|
–blkio-weight | uint16,更新块IO限制,10~1000,默认为0 |
–cpu-period | int,限制CPU调度器CFS使用时间,单位为微秒,最小1000 |
–cpu-quota | int,限制CPU调度器CFS配额,单位为微秒,最小1000 |
–cpu-rt-period | int,限制 CPU 调度器的实时周期,单位为微秒 |
–cpu-rt-runtime | int,限制 CPU 调度器的实时运行时,单位为微秒 |
–cpu-shares | int,限制 CPU 使用份额 |
–cpuset-cpus | string,允许使用的 CPU 核,如 0-3, 0,1; |
–cpuset-mems | string,允许使用的内存块,如 0-3’ 0, 1; |
–kernel-memory | string 字节,限制使用的内核内存; |
–memory | string 字节,限制使用的内存; |
–memory-reservation | string 字节,内存软限制; |
–memory-swap | 内存加上缓存区的限制,-1 表示为对缓冲区无限制; |
–restart | 容器退出后的重启策略 |
[root@aliyun tmp]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
563435e882ec centos:latest "/bin/bash" 46 hours ago Up 2 hours ecstatic_pike
570c98d0654d nginx "/docker-entrypoin..." 5 days ago Up 17 minutes 0.0.0.0:8080->80/tcp myNginx
[r
oot@aliyun tmp]# docker update --cpu-quota 100000 --cpu-period 150000 570c98d0654d
570c98d0654d
8、小结
本篇主要详细说明了容器命令,最常用的莫过于 docker run 和docker exec 两者。通过创建容器时指定对应的资源配置选项来约束容器运行,保证宿主机和容器能够高效协作,在生产环境当中,为了提高容器的高可用和安全性,往往做到以下两点:
- 要合理使用资源限制参数来管理容器的资源消耗。
- 要指定合适的容器重启策略,来自动重启退出的容器。
PS:理论部分参考杨保华的《Docker技术入门与实战》,感兴趣的可以阅读之。