首页·终端命令

docker run

包与运行时

用法

docker run [-d] [-p <host>:<container>] <image> [command]

每次都会从镜像新建并启动一个容器,所以敲两次就有两个容器,重启已有的那个要用 docker start;不加 -p 主机访问不到,不加 -v 写下的东西会随容器一起消失。

常用选项

选项含义
-drun in the background and print the id
-p 8080:80publish a container port on the host
-itinteractive with a terminal, for a shell
--rmdelete the container when it exits
-v <host>:<path>mount a host folder or named volume
-e KEY=valueset an environment variable
--name <name>give it a name instead of a random one
--network <net>attach it to a network

示例

docker run --rm -it ubuntu bash

a throwaway shell in a container

docker run -d -p 8080:80 --name web nginx

nginx in the background, reachable on localhost:8080

docker run --rm -v "$PWD":/app -w /app node:22 npm test

runs your tests in a container without installing node

问题永远是什么装到哪里:装进这个项目,还是装到整台机器上。

怎么看

  • 方括号 [ ] 表示这部分可以不写。
  • 省略号 … 表示可以写多个。
  • 选项区分大小写——有些命令里 -r 和 -R 不是一回事。

常见问题

Q. docker run 是做什么的?

每次都会从镜像新建并启动一个容器,所以敲两次就有两个容器,重启已有的那个要用 docker start;不加 -p 主机访问不到,不加 -v 写下的东西会随容器一起消失。

Q. 怎么写?

docker run [-d] [-p <host>:<container>] <image> [command] —— 方括号表示可以省略的部分。

Q. 值得记的选项有几个?

这里列了 8 个,完整列表在 man docker。这条命令属于包与运行时。

相关命令

man 手册: man docker-run