Docker 入门 3 容器基本操作
启动容器
单次启动容器
docker run [image] [命令]
交互式容器
docker run -i -t <image> /bin/bash
-i
: --interative=true | fasle ,默认是 false,告诉 docher 守护进程为容器始终打开标准输入-t
:--tty=true | false ,默认是 false,为容器创建一个伪 tty 终端/bin/bash
:在容器启动时运行 bash 命令
自定义容器名
docker run --name=<自定义名> -i -t <image> /bin/bash
第一次启动
docker run -i -t ubuntu /bin/bash
第一次启动尚未用过的容器(比如:安装完 Docker 第一次创建 Ubuntu 容器),会提示无法在本地找到映像“ubuntu:最新版” ,然后执行下载:
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
423ae2b273f4: Pull complete
de83a2304fa1: Pull complete
f9a83bce3af0: Pull complete
b6b53be908de: Pull complete
Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df
Status: Downloaded newer image for ubuntu:latest
root@e4e83623d3a0:/#
可以看到容器 id 为:e4e83623d3a0
。
以守护态运行容器
交互式容器转守护态
docker run -i -t --name=ubuntu_test [image] /bin/bash
以守护形式运行该容器,前输入 [Ctrl+P]
,再输入 [Ctrl+Q]
。
以守护态启动容器
docker run -d [-i] [-t] [id/容器名] [/bin/bash]
-d
:后台启动- 其余参数同交互式创建
创建成功会返回容器的长id,过程如下:
$ docker run -d ubuntu
4021afee76279836d4b497b55a8e921f1ade8e993bebfe0f8a02b799a2a7df7a
查看容器列表
docker ps [-a] [-l]
- 无参数:
docker ps
显示当前运行的容器,如果容器停止了,表格为空。 -a
:显示所有容器-l
:显示最新 创建 的容器
查看容器信息
docker inspect [CONTAINER NAME/ID]
停止和启动停止容器
暂停容器
docker pause [CONTAINER NAME/ID]
终止容器
docker stop [CONTAINER NAME/ID]
kill
命令也能终止容器,为什么不推荐使用它呢?
stop
支持“优雅退出”。先发送 SIGTERM=19 信号,在一段时间之后(10s)再发送 SIGKILL=9 信号。Docker 内部的应用程序可以接收 SIGTERM=19 信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。
kill
则发送 SIGKILL=9 信号,应用程序直接退出。
启动停止容器
docker start [-i] [CONTAINER NAME/ID]
-i
:交互方式启动
重启容器
docker restart [CONTAINER NAME/ID]
过程:先 stop 终止,再 start 启动。
进入容器
推荐使用 exec
命令进入容器。
exec
exec 用以在容器中执行任意命令,在运行容器中启动新进程。
docker exec [-d] [-i] [-t] [CONTAINER NAME/ID] [COMMAND] [ARG]
进入容器:
docker exec -it [CONTAINER NAME/ID] /bin/bash
-
打开容器的一个新的 bash 终端,并以
-it
保持标准输入打开。不加
-it
和/bin/bash
,则只执行一次命令并输出。示例:$ docker exec blivechat ls Dockerfile $
attach
docker attach [OPTIONS] [CONTAINER NAME/ID]
-
Options: --detach-keys string 指定推出 attach 模式的快捷键序列 --no-stdin 是否打开标准输出 --sig-proxy 是否代理收到的系统信号给应用程序
注意:多个 attach 同时访问时,其中一个进行操作,所有 attach 都同步显示。当然,单个阻塞全部阻塞。
查看容器输出、日志
docker logs [-f] [-t] [--tail] [CONTAINER NAME/ID]
-
无参数:不指定,返回所有日志
-
-f
:--follow=true | false ,默认为 false ,一直跟踪日志变化并返回结果。实时返回,Ctrl+C
停止返回。 -
-t
:--timestamps=true | false ,默认为 false,在返回结果上加上时间戳 -
--tail
:后跟需返回的日志数量。
查看容器进程
docker top [CONTAINER NAME/ID]
复制文件
docker cp [FILE] [CONTAINER NAME/ID]:[PATH]
[FILE]
为宿主机文件,[CONTAINER NAME/ID]:[PATH]
为指定的容器存储文件的目标路径。
查看端口映射
docker port [CONTAINER NAME/ID]
更新配置
docker update [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS 说明
名称 描述 --blkio-weight
阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止) --cpu-period
限制CPU CFS(完全公平的调度程序)期限 --cpu-quota
限制CPU CFS(完全公平的调度程序)配额 --cpu-rt-period
API 1.25+
,将CPU实时时间限制为微秒--cpu-rt-runtime
API 1.25+
,将CPU实时运行时间限制为微秒--cpu-shares
,-c
CPU份额(相对权重) --cpus
API 1.29+
,CPU数量--cpuset-cpus
允许执行的CPU(0-3,0,1) --cpuset-mem
允许执行的MEM(0-3,0,1) --kernel-memory
内核内存限制 --memory-swap
交换限制等于内存加交换,“-1”以启用无限交换 --memory-reservatio
内存软限制 --memory
,-m
内存限制 --pids-limit
API 1.40+
,调节容器pids限制(-1表示无限制)--restart
容器退出时重新启动策略以应用 更多用法请查看:https://docs.docker.com/engine/reference/commandline/update/