Docker 容器

什么是容器?

Docker 镜像的实例。 容器表示单个应用程序、进程或服务的执行。 它由 Docker 镜像的内容、执行环境和一组标准指令组成。可以从相从同一个的镜像创建多个容器实例,可以向每个实例传递不同的参数。

容器相关命令【常用】

docker run :创建一个新的容器并运行一个命令

命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数

参数名

默认

描述

--add-host

 

添加自定义主机到IP的映射(hostip

--attach , -a

 

附加到STDINSTDOUTSTDERR

--blkio-weight

 

IO(相对权重),介于101000之间,或者为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实时时间(以微秒为单位)

--cpu-rt-runtime

 

API 1.25+
限制CPU实时运行时间(以微秒为单位)

--cpu-shares , -c

 

CPU份额(相对重量)

--cpus

 

API 1.25+
CPU
数量

--cpuset-cpus

 

允许执行的CPU0-30,1

--cpuset-mems

 

允许执行的MEM0-30,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+
GPU
设备添加到容器中("全部"传递所有GPU

--group-add

 

添加其他群组即可加入

--health-cmd

 

运行命令以检查运行状况

--health-interval

 

运行检查之间的时间(ms | s | m | h)(默认为0s

--health-retries

 

需要连续报告不健康状况

--health-start-period

 

API 1.29+
容器在开始运行状况重试倒计时(ms | s | m | h)之前初始化的开始时间(默认为0s

--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地址(例如2001db8 :: 33

--ipc

 

使用的IPC模式

--isolation

 

集装箱隔离技术

--kernel-memory

 

内核内存限制

--label , -l

 

在容器上设置元数据

--label-file

 

读入行分隔的标签文件

--link

 

将链接添加到另一个容器

--link-local-ip

 

容器IPv4 / IPv6链接本地地址

--log-driver

 

容器的日志记录驱动程序

--log-opt

 

日志驱动程序选项

--mac-address

 

容器MAC地址(例如92d0c60a2933

--memory , -m

 

内存限制

--memory-reservation

 

内存软限制

--memory-swap

 

交换限制等于内存加交换:"-1"以启用无限交换

--memory-swappiness

-1

调整容器内存交换(0100

--mount

 

将文件系统挂载附加到容器

--name

 

为容器分配一个名称

--net

 

将容器连接到网络

--net-alias

 

为容器添加网络范围的别名

--network

 

将容器连接到网络

--network-alias

 

为容器添加网络范围的别名

--no-healthcheck

 

禁用任何容器指定的健康检查

--oom-kill-disable

 

禁用OOM杀手

--oom-score-adj

 

调台主持人的OOM首选项(-10001000

--pid

 

使用的PID名称空间

--pids-limit

 

调整容器pids限制(将-1设置为无限制)

--platform

 

实验(守护程序)API 1.32+
设置平台(如果服务器具有多平台功能)

--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

选择其中的一个参数createdrestartingrunningremovingpausedexited,或者dead

ancestor

筛选共享给定镜像作为祖先的容器。表现为<image-name>[:<tag>] <image id><image@digest>

before 要么 since

过滤在给定容器ID或名称之前或之后创建的容器

volume

过滤运行已安装给定卷或绑定安装的容器。

network

筛选正在运行的连接到给定网络的容器。

publish 要么 expose

筛选发布或公开给定端口的容器。表示为<port>[/<proto>]<startport-endport>/[<proto>]

health

根据健康检查状态过滤容器。选择其中一个参数startinghealthyunhealthynone

isolation

Windows守护程序。其中一个defaultprocesshyperv

is-task

筛选作为服务"任务"的容器。布尔选项(truefalse

例子:列出所有的容器

例子:列出正在运行的容器

退出容器

退出后容器停止: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:删除或多个容器

命令
docker remove [OPTIONS] CONTAINER [CONTAINER...]
参数

 

默认

描述

--force , -f

 

强制删除正在运行的容器(使用SIGKILL

--link , -l

 

删除指定的链接

--volumes , -v

 

删除与容器关联的匿名卷

删除所有容器

docker rm $(docker ps -a -q)

例子:删除一个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-02T132337)或相对记录(例如42m42分钟)

--tail

all

从日志末尾开始显示的行数

--timestamps , -t

 

显示时间戳

--until

 

API 1.35+
在时间戳(例如2013-01-02T132337)或相对时间戳(例如42m持续42分钟)之前显示日志

例子:获取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/

posted @ 2020-05-02 17:11  quan0zhou  阅读(341)  评论(0编辑  收藏  举报