使用

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

选项

名称描述
-a指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 详情
-w指定容器的工作目录
-c指定容器CPU权重, 在CPU共享场景使用
-m指定容器的内存上限
-d后台运行容器,并返回容器ID 详情
-p端口映射,格式为:宿主机端口:容器端口 详情
-i以交互模式运行容器,通常与 -t 同时使用 详情
-t为容器重新分配一个tty伪输入终端,通常与 -i 同时使用 详情
-v挂载数据卷
--name为容器指定一个名称,后续可以通过名字进行容器管理
--rm指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
-h ""指定容器的主机名
-e key="value",--env=[]设置环境变量
--env-file=[]从指定文件读入环境变量
--net=""指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型

参数说明

-a:
指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项。

如果在执行run命令时没有指定-a参数,那么Docker默认会挂载所有标准数据流,包括输入输出和错误,你可以单独指定挂载哪个标准流;

-d:
后台运行容器,并返回容器ID;

如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run的这个终端命令行窗口。但你可以通过执行docker attach来重新附着到该容器的回话中。需要注意的是,容器运行在后台模式下,是不能使用–rm选项的。

-p:
端口映射,格式为:宿主机端口:容器端口

  • 指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有
    • hostPort:containerPort(映射所有接口地址)
      将本地的 5000 端口映射到容器的 5000 端口,可以执行如下命令:
      $ sudo docker run -d -p 5000:5000 training/webapp python app.py 此时默认会绑定本地所有接口上的所有地址
    • ip:hostPort:containerPort(映射指定地址的指定端口)
      指定映射使用一个特定地址,比如 localhost 地址 127.0.0.1
      $ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
    • ip::containerPort(映射指定地址的任意端口)
      绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口。
      sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
      还可以使用 udp 标记来指定 udp 端口
      $ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
  • -p 标记可以多次使用来绑定多个端口

-i:
以交互模式运行容器,通常与 -t 同时使用;

即使没有连接,仍然保持STDIN打开

-t:
为容器重新分配一个tty伪输入终端,通常与 -i 同时使用;

用比较简单容易理解的话说是,-i 开启了input(输入)功能,连接了-t开启的一个容器里边的terminal(终端)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐