容器是经过 image 建立的进程。程序员
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 同样,镜像是静态的定义,容器是镜像运行时的实体。容器能够被建立、启动、中止、删除、暂停等。
下面的命令的含义:经过 Ubuntu:18.04 这个 image 建立一个容器并运行 /bin/echo 'Hello world',完成后中止该容器。docker
$ docker run ubuntu:18.04 /bin/echo 'Hello world' Hello world
使用 docker run 命令,后台实际上执行的内容为:ubuntu
上面的示例执行完之后会终止,可是通常咱们在使用一个提供服务的容器的时候,不想让它中止,那么可使用 -d 参数,使容器保持在后台运行。可是须要注意——容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关bash
以下命令执行完后,容器依然会中止spa
$ docker run -d ubuntu
而以下命令执行完后,容器则在后台保持运行设计
$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
$ docker run -dit ubuntu ffff9516c6151ef3b436df1bccc70ba9da2d0f57bbec5afe19353fe481e12702 $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ffff9516c615 ubuntu "/bin/bash" 7 seconds ago Up 6 seconds elegant_hypatia $ docker attach ffff9516c615 root@ffff9516c615:/#
注意: 若是从这个 stdin 中 exit,会致使容器的中止。rest
$ docker run -dit ubuntu 15fc4d97c1b4ea25d76e568fb4e695d5b48d7f13ebbb6d718a80b86a4764a005 // 只用 -i 参数时,因为没有分配伪终端,界面没有咱们熟悉的 Linux 命令提示符,但命令执行结果仍然能够返回。 $ docker exec -i 15fc4d97c1b4ea25 bash ls bin boot dev etc ... //当 -i -t 参数一块儿使用时,则能够看到咱们熟悉的 Linux 命令提示符。 $ docker exec -it 15fc4d97c1b4ea25 bash root@15fc4d97c1b4:/#
注意:若是从这个 stdin 中 exit,不会致使容器的中止。code