什么是容器?
Docker 镜像的实例。 容器表示单个应用程序、进程或服务的执行。 它由 Docker 镜像的内容、执行环境和一组标准指令组成。可以从相从同一个的镜像创建多个容器实例,可以向每个实例传递不同的参数。
容器相关命令【常用】
docker run :创建一个新的容器并运行一个命令
命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数
参数名 | 默认 | 描述 |
--add-host | 添加自定义主机到IP的映射(host:ip) | |
--attach , -a | 附加到STDIN,STDOUT或STDERR | |
--blkio-weight | 块IO(相对权重),介于10到1000之间,或者为0禁用(默认为0) | |
--blkio-weight-device | 块IO重量(相对设备重量) | |
--cap-add | 添加Linux功能 | |
--cap-drop | 放弃Linux功能 | |
--cgroup-parent | 容器的可选父cgroup | |
--cidfile | 将容器ID写入文件 | |
--cpu-count | CPU数量(仅Windows) | |
--cpu-percent | CPU百分比(仅Windows) | |
--cpu-period | 限制CPU CFS(完全公平的调度程序)期限 | |
--cpu-quota | 限制CPU CFS(完全公平的调度程序)配额 | |
--cpu-rt-period | API 1.25+ | |
--cpu-rt-runtime | API 1.25+ | |
--cpu-shares , -c | CPU份额(相对重量) | |
--cpus | API 1.25+ | |
--cpuset-cpus | 允许执行的CPU(0-3,0,1) | |
--cpuset-mems | 允许执行的MEM(0-3,0,1) | |
--detach , -d | 在后台运行容器并打印容器ID | |
--detach-keys | 覆盖分离容器的键序列 | |
--device | 将主机设备添加到容器 | |
--device-cgroup-rule | 将规则添加到cgroup允许的设备列表中 | |
--device-read-bps | 限制从设备读取的速率(每秒字节数) | |
--device-read-iops | 限制从设备读取的速率(每秒IO) | |
--device-write-bps | 限制对设备的写入速率(每秒字节数) | |
--device-write-iops | 限制对设备的写入速率(每秒IO) | |
--disable-content-trust | true | 跳过图像验证 |
--dns | 设置自定义DNS服务器 | |
--dns-opt | 设定DNS选项 | |
--dns-option | 设定DNS选项 | |
--dns-search | 设置自定义DNS搜索域 | |
--domainname | 容器NIS域名 | |
--entrypoint | 覆盖图像的默认ENTRYPOINT | |
--env , -e | 设置环境变量 | |
--env-file | 读入环境变量文件 | |
--expose | 公开一个或多个端口 | |
--gpus | API 1.40+ | |
--group-add | 添加其他群组即可加入 | |
--health-cmd | 运行命令以检查运行状况 | |
--health-interval | 运行检查之间的时间(ms | s | m | h)(默认为0s) | |
--health-retries | 需要连续报告不健康状况 | |
--health-start-period | API 1.29+ | |
--health-timeout | 允许执行一次检查的最长时间(ms | s | m | h)(默认为0s) | |
--help | 打印用量 | |
--hostname , -h | 容器主机名 | |
--init | API 1.25+ | |
--interactive , -i | 即使未连接STDIN也保持打开状态 | |
--io-maxbandwidth | 系统驱动器的最大IO带宽限制(仅Windows) | |
--io-maxiops | 系统驱动器的最大IOps限制(仅Windows) | |
--ip | IPv4地址(例如172.30.100.104) | |
--ip6 | IPv6地址(例如2001:db8 :: 33) | |
--ipc | 使用的IPC模式 | |
--isolation | 集装箱隔离技术 | |
--kernel-memory | 内核内存限制 | |
--label , -l | 在容器上设置元数据 | |
--label-file | 读入行分隔的标签文件 | |
--link | 将链接添加到另一个容器 | |
--link-local-ip | 容器IPv4 / IPv6链接本地地址 | |
--log-driver | 容器的日志记录驱动程序 | |
--log-opt | 日志驱动程序选项 | |
--mac-address | 容器MAC地址(例如92:d0:c6:0a:29:33) | |
--memory , -m | 内存限制 | |
--memory-reservation | 内存软限制 | |
--memory-swap | 交换限制等于内存加交换:"-1"以启用无限交换 | |
--memory-swappiness | -1 | 调整容器内存交换(0到100) |
--mount | 将文件系统挂载附加到容器 | |
--name | 为容器分配一个名称 | |
--net | 将容器连接到网络 | |
--net-alias | 为容器添加网络范围的别名 | |
--network | 将容器连接到网络 | |
--network-alias | 为容器添加网络范围的别名 | |
--no-healthcheck | 禁用任何容器指定的健康检查 | |
--oom-kill-disable | 禁用OOM杀手 | |
--oom-score-adj | 调台主持人的OOM首选项(-1000至1000) | |
--pid | 使用的PID名称空间 | |
--pids-limit | 调整容器pids限制(将-1设置为无限制) | |
--platform | ||
--privileged | 赋予此容器扩展的特权 | |
--publish , -p | 将容器的端口发布到主机 | |
--publish-all , -P | 将所有公开的端口发布到随机端口 | |
--read-only | 将容器的根文件系统挂载为只读 | |
--restart | no | 容器退出时重新启动策略以应用 |
--rm | 退出时自动删除容器 | |
--runtime | 用于此容器的运行时 | |
--security-opt | 安全选项 | |
--shm-size | / dev / shm的大小 | |
--sig-proxy | true | 代理接收到该过程的信号 |
--stop-signal | SIGTERM | 停止容器的信号 |
--stop-timeout | API 1.25+ | |
--storage-opt | 容器的存储驱动程序选项 | |
--sysctl | Sysctl选项 | |
--tmpfs | 挂载tmpfs目录 | |
--tty , -t | 分配伪TTY | |
--ulimit | Ulimit选项 | |
--user , -u | 用户名或UID(格式:<名称| uid> [:<组| gid>]) | |
--userns | 要使用的用户名称空间 | |
--uts | 要使用的UTS名称空间 | |
--volume , -v | 绑定挂载卷 | |
--volume-driver | 容器的可选音量驱动器 | |
--volumes-from | 从指定的容器挂载卷 | |
--workdir , -w | 容器内的工作目录 |
例如:运行一个CentOS的镜像实例
docker ps :列出容器
命令
docker ps [OPTIONS]
参数
参数名 | 默认 | 描述 |
--all , -a | 显示所有容器(默认显示为正在运行) | |
--filter , -f | 根据提供的条件过滤输出 | |
--format | 使用Go模板打印漂亮的容器 | |
--last , -n | -1 | 显示n个最后创建的容器(包括所有状态) |
--latest , -l | 显示最新创建的容器(包括所有状态) | |
--no-trunc | 不要截断输出 | |
--quiet , -q | 仅显示数字ID | |
--size , -s | 显示文件总大小 |
--filter参数
过滤 | 描述 |
id | 容器ID |
name | 容器名称 |
label | 表示键或键值对的任意字符串。表示为<key>或<key>=<value> |
exited | 表示容器的退出代码的整数。仅对有用--all。 |
status | 选择其中的一个参数created,restarting,running,removing,paused,exited,或者dead |
ancestor | 筛选共享给定镜像作为祖先的容器。表现为<image-name>[:<tag>], <image id>或<image@digest> |
before 要么 since | 过滤在给定容器ID或名称之前或之后创建的容器 |
volume | 过滤运行已安装给定卷或绑定安装的容器。 |
network | 筛选正在运行的连接到给定网络的容器。 |
publish 要么 expose | 筛选发布或公开给定端口的容器。表示为<port>[/<proto>]或<startport-endport>/[<proto>] |
health | 根据健康检查状态过滤容器。选择其中一个参数starting,healthy,unhealthy或none。 |
isolation | 仅Windows守护程序。其中一个default,process或hyperv。 |
is-task | 筛选作为服务"任务"的容器。布尔选项(true或false) |
例子:列出所有的容器
例子:列出正在运行的容器
退出容器
退出后容器停止:exit
退出后容器不停止:Ctl+P+Q
docker start:启动一个或多个已停止的容器
命令
docker start [OPTIONS] CONTAINER [CONTAINER...]
参数
参数名 | 默认 | 描述 |
--attach , -a | 连接STDOUT / STDERR和转发信号 | |
--checkpoint | 实验(守护程序) | |
--checkpoint-dir | 实验(守护程序) | |
--detach-keys | 覆盖分离容器的键序列 | |
--interactive , -i | 附加容器的STDIN |
例子:启动centos两个已停止的容器
docker restart:重启一个或多个容器
命令
docker restart [OPTIONS] CONTAINER [CONTAINER...]
参数
参数名 | 默认 | 描述 |
--time , -t | 10 | 在杀死容器之前等待停止的秒数 |
例子:重启centos两个容器
docker stop:停止一个或多个运行中容器
命令
docker stop [OPTIONS] CONTAINER [CONTAINER...]
参数
参数名 | 默认 | 描述 |
--time , -t | 10 | 在停止容器之前等待停止的秒数 |
例子:停止两个centos两个容器
docker kill:杀死一个或多个正在运行容器
命令
docker kill [OPTIONS] CONTAINER [CONTAINER...]
参数
参数名 | 默认 | 描述 |
--signal , -s | KILL | 信号发送到容器 |
例子:杀死两个centos两个容器
docker rm:删除或多个容器
命令 默认 描述 --force , -f 强制删除正在运行的容器(使用SIGKILL) --link , -l 删除指定的链接 --volumes , -v 删除与容器关联的匿名卷
docker remove [OPTIONS] CONTAINER [CONTAINER...]
参数
删除所有容器
例子:删除一个centos容器
docker inspect :显示docker对象的底层信息
命令
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
参数
参数名 | 默认 | 描述 |
--format , -f | 使用给定的Go模板格式化输出 | |
--size , -s | 如果类型为容器,则显示文件总大小 | |
--type | 返回指定类型的JSON |
例子:显示centos的镜像信息、实例信息
docker logs:获取容器的日志
命令
docker logs [OPTIONS] CONTAINER
参数
参数名 | 默认 | 描述 |
--details | 显示提供给日志的其他详细信息 | |
--follow , -f | 跟踪日志输出 | |
--since | 显示自时间戳记以来的日志(例如2013-01-02T13:23:37)或相对记录(例如42m的42分钟) | |
--tail | all | 从日志末尾开始显示的行数 |
--timestamps , -t | 显示时间戳 | |
--until | API 1.35+ |
例子:获取nginx容器中的日志
docker top:显示容器内运行的进程
命令
docker top CONTAINER [ps OPTIONS]
例子:显示centos容器中的运行进程
docker attach:将本地标准输入,输出和错误流附加到正在运行的容器
命令
docker attach [OPTIONS] CONTAINER
参数
参数名 | 默认 | 描述 |
--detach-keys | 覆盖分离容器的键序列 | |
--no-stdin | 不要附上STDIN | |
--sig-proxy | true | 代理所有接收到的信号到进程 |
例子:附加到运行的centos容器,然后退出
docker exec:在正在运行的容器中运行命令
命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
参数
参数名称 | 默认 | 描述 |
--detach , -d | 分离模式:在后台运行命令 | |
--detach-keys | 覆盖分离容器的键序列 | |
--env , -e | API 1.25+ | |
--interactive , -i | 即使未连接STDIN也保持打开状态 | |
--privileged | 赋予命令扩展权限 | |
--tty , -t | 分配伪TTY | |
--user , -u | 用户名或UID(格式:<名称| uid> [:<组| gid>]) | |
--workdir , -w | API 1.35+ |
例子:在运行的centos容器中,在后台创建一个test文件夹
docker cp:在容器和本地文件系统之间复制文件/文件夹
命令
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
参数
参数名 | 默认 | 描述 |
--archive , -a | 存档模式(复制所有uid / gid信息) | |
--follow-link , -L | 始终遵循SRC_PATH中的符号链接 |
例子:将容器内的test文件夹复制到宿主机上
参考资料
https://docs.microsoft.com/zh-cn//dotnet/architecture/microservices/container-docker-introduction/docker-terminology
https://www.runoob.com/docker/docker-run-command.html
https://docs.docker.com/reference/