2015-08-02 15:43:04 +08:00
|
|
|
|
##后台(background)运行
|
2014-09-15 21:25:36 +08:00
|
|
|
|
|
2017-10-31 23:24:49 +08:00
|
|
|
|
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 `-d` 参数来实现。
|
2014-09-15 21:25:36 +08:00
|
|
|
|
|
2015-08-02 15:43:04 +08:00
|
|
|
|
下面举两个例子来说明一下。
|
|
|
|
|
|
|
|
|
|
如果不使用 `-d` 参数运行容器。
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ docker run ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
|
2015-08-02 15:43:04 +08:00
|
|
|
|
hello world
|
|
|
|
|
hello world
|
|
|
|
|
hello world
|
|
|
|
|
hello world
|
2014-09-15 21:25:36 +08:00
|
|
|
|
```
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
|
|
|
|
容器会把输出的结果 (STDOUT) 打印到宿主机上面
|
2015-08-02 15:43:04 +08:00
|
|
|
|
|
|
|
|
|
如果使用了 `-d` 参数运行容器。
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
|
2015-08-02 15:43:04 +08:00
|
|
|
|
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a
|
|
|
|
|
```
|
|
|
|
|
|
2017-10-31 23:24:49 +08:00
|
|
|
|
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 `docker logs` 查看)。
|
|
|
|
|
|
|
|
|
|
**注:** 容器是否会长久运行,是和 `docker run` 指定的命令有关,和 `-d` 参数无关。
|
2014-09-15 21:25:36 +08:00
|
|
|
|
|
2015-08-02 15:43:04 +08:00
|
|
|
|
使用 `-d` 参数启动后会返回一个唯一的 id,也可以通过 `docker ps` 命令来查看容器信息。
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ docker ps
|
2014-09-15 21:25:36 +08:00
|
|
|
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
2015-08-02 15:43:04 +08:00
|
|
|
|
77b2dc01fe0f ubuntu:14.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute agitated_wright
|
2014-09-15 21:25:36 +08:00
|
|
|
|
```
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
2014-10-14 13:25:01 +08:00
|
|
|
|
要获取容器的输出信息,可以通过 `docker logs` 命令。
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ docker logs [container ID or NAMES]
|
2014-09-15 21:25:36 +08:00
|
|
|
|
hello world
|
|
|
|
|
hello world
|
|
|
|
|
hello world
|
|
|
|
|
. . .
|
|
|
|
|
```
|
2017-10-31 23:24:49 +08:00
|
|
|
|
|
|
|
|
|
# Docker 1.13+
|
|
|
|
|
|
|
|
|
|
在 Docker 1.13+ 版本中推荐使用 docker container 来管理镜像。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ docker container run -d
|
|
|
|
|
$ docker container ls
|
|
|
|
|
$ docker container logs
|
|
|
|
|
```
|