Docker在隔离的容器中运行进程。容器是运行在主机上的进程。主机可以是本地的,也可以是远程的。当一个操作员执行docker run时,运行的容器进程是隔离的,因为它有自己的文件系统,自己的网络,自己独立于主机的进程树。
一般形式
基本的docker run命令是这样的:一般形式
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
该docker run命令必须指定 要从中派生容器的IMAGE。图像开发人员可以定义与以下内容有关的图像默认值:
- 独立运行或前台运行
- 容器识别
- 网络设置
- CPU和内存的运行时限制
使用,docker run [OPTIONS]操作员可以添加或覆盖开发人员设置的图像默认设置。此外,操作员可以覆盖Docker运行时本身设置的几乎所有默认设置。操作员具有覆盖映像和Docker运行时默认值的能力,这就是为什么run具有比其他任何docker命令更多的选项的原因 。
该docker run命令首先creates是在指定图像上的可写容器层,然后starts使用指定命令。也就是说, docker run相当于API /containers/create,然后 /containers/(id)/start。使用可以重新启动已停止的容器,使其之前的所有更改保持不变docker start。请参阅docker ps -a以查看所有容器的列表。
该docker run命令可与结合使用docker commit以 更改容器运行的命令。docker run在Docker运行参考中还有关于的其他详细信息。
有关将容器连接到网络的信息,请参阅“ Docker网络概述”。
有关此命令的示例用法,请参阅下面的示例部分。
选项
| 名称,速记 | 默认 | 描述 |
|---|---|---|
--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 | |
--cgroupns |
API 1.41以上 要使用(host | private)’host’的Cgroup命名空间:在Docker主机的cgroup命名空间’private’中运行容器:在其自己的私有cgroup命名空间中运行容器’’:使用由default-cgroupns-配置的cgroup命名空间守护程序上的mode选项(默认) |
|
--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 |
允许执行的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+ 要添加到容器中的GPU设备(“全部”通过所有GPU) |
|
--group-add |
添加其他群组即可加入 | |
--health-cmd |
运行命令以检查运行状况 | |
--health-interval |
运行检查之间的时间(ms | s | m | h)(默认为0s) | |
--health-retries |
连续失败需要报告不健康 | |
--health-start-period |
API 1.29+ 开始运行状况重试倒计时之前,容器初始化的开始时间(毫秒|秒|米|小时)(默认为0秒) |
|
--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 |
API 1.32+ 如果服务器支持多平台,则设置平台 |
|
--privileged |
赋予此容器扩展的特权 | |
--publish , -p |
将容器的端口发布到主机 | |
--publish-all , -P |
将所有公开的端口发布到随机端口 | |
--pull |
missing |
在运行之前拉出图像(“总是” |“缺少” |“从不”) |
--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 |
容器内的工作目录 |
例子
分配名称并分配-TTY (—name, -it)
$ docker run --name test -it debianroot@d6c0fe130dba:/# exit 13$ echo $?13$ docker ps -a | grep testd6c0fe130dba debian:7 "/bin/bash" 26 seconds ago Exited (13) 17 seconds ago test
本示例运行一个test使用debian:latest 图像命名的容器。的-it指示多克尔分配一个伪TTY连接到所述容器的stdin; bash在容器中创建一个交互式外壳。在此示例中,bash通过输入退出外壳程序 exit 13。此退出代码将传递给的调用者 docker run,并记录在test容器的元数据中。
设置工作目录(-w)
$ docker run -w /path/to/dir/ -i -t ubuntu pwd
该-w让所执行的命令目录里面给出,这里 /path/to/dir/。如果路径不存在,则会在容器内创建该路径。
docker run 的常用命令
用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
- docker run —name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
- docker run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
- docker run -p 80:80 -v /data:/data -d nginx:latest
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
- $ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
- test@test:~$ docker run -it nginx:latest /bin/bash
- root@b8573233d675:/#
