docker常用命令_RUN命令

启动新容器时必然会用到它。因此,它是迄
今为止最复杂的命令,能支持非常多的参数。它的选项允许用户配置镜像运行的方式、覆
盖 Dockerfile 设置、配置联网,以及设置容器的权限和资源。

命令 描述
-a, –attach 把指定的数据流(如 STDOUT 之类)连接至终端。若未指定,则默认连接 stdout 和

stderr。若数据流未指定,而容器以交互模式(-i)启动,则 stdin 也会被连接至终端。
此选项与 -d 选项不兼容
-d, –detach|使容器在“分离”模式下运行。容器会在后台运行,而命令的返回值是容器的 ID。
-i, –interactive|保持 stdin 打开(即使它没有被被连接至终端 10)。一般与 –t 同时使用,用作启动交互
式会话的容器。例如:
$ docker run -it debian /bin/bash
root@bd0f26f928bb:/# ls
…省略…

–restart|配置 Docker 在什么情况下尝试重新启动已退出的容器。参数为 no 意味着永远不会尝
试重新启动容器;always 指不管退出状态是什么,总会尝试重新启动;on-failure 仅
当退出状态不为 0 的时候才会尝试重启 ,并且可以追加一个可选参数,指定尝试重启
的次数,超过重启次数就会放弃(如果没有指定,那就一直重试)。例如,docker run
–restart on-failure:10 postgres 将启动 postgres 容器,并当退出值不为 0 的时候,
尝试重启最多 10 次。
–rm|退出时自动删除容器。不能与 -d 选项同时使用。
-t, –tty|分配一个伪终端(pseudo-TTY)。通常与 -i 同时使用,用来启动交互式容器。
-e, –env|设置容器内的环境变量。例如:
$ docker run -e var1=val -e var2=”val 2” debian env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b15f833d65d8
var1=val
var2=val 2
HOME=/root
另外,–env-file 选项可以经文件传入环境变量。
-h, –hostname NAME|设置容器的 unix 主机名为 NAME。例如:
$ docker run -h “myhost” debian hostname
myhost
–name NAME|把 NAME 设置为容器的名称。以后,其他 Docker 命令便可以使用该名称来称呼这个容器。
以下选项允许用户进行数据卷的设置
-v, –volume|这个选项可以用来设置数据卷(数据卷即一个容器中的文件或目录,实际属于主机的文
件系统,而非容器的联合文件系统的一部分),有两种形式的参数可供使用。第一种形
式仅指定容器中的目录,Docker 会自行选定一个主机上的目录与之绑定。第二种形式
除了指定容器目录,还指定与容器目录绑定的主机目录。
–volumes-from|挂载指定容器拥有的数据卷。经常用于数据容器
–expose|与 Dockerfile 的 EXPOSE 指令功能一样。指定容器将会使用的端口或端口范围,但并不会
把端口打开。只有与 -P 参数同时使用,以及在连接容器时,才有真正意义。
–link|建立一个与指定容器连接的内部网络接口。详
-p, –publish|“发布”容器的端口,使主机能访问它。若没有指定主机端口,则会随机分配一个高端
口,可通过 docker port 命令查看分配了哪个端口。还可以指定端口是在主机的哪个网
络接口开放。
-P, –publish-all|“发布”所有已指定为开放(exposed)的容器端口,使主机能访问它们。每个容器端口
均对应一个随机挑选的高端口。docker port 命令可以用来查看端口之间的映射关系。
如果你需要更高级的联网功能,还有几个进阶的选项可用。但请注意,这些选项中有一些
要求你对联网有一定了解,以及明白联网在 Docker 中如何实现