4.3 新建并启动容器(run)
docker [container] run等价于先执行docker [container] create命令,再执行docker [container] start命令。例如,下面的命令输出一个“Hello World”,之后容器自动终止:
$ docker run ubuntu:latest /bin/echo "hello world"
hello world
当利用docker [container] run来创建并启动容器时,Docker在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载;
利用镜像创建一个容器,并启动该容器;
分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
从网桥的地址池配置一个IP地址给容器;
执行用户指定的应用程序;
执行完毕后容器被自动终止。
1. 交互模式
下面的命令启动一个bash终端,允许用户进行交互:
$ docker run -it ubuntu:latest /bin/bash
root@7b514d55f51b:/# pwd
/
root@7b514d55f51b:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@7b514d55f51b:/# ps
PID TTY TIME CMD
1 pts/0 00:00:00 bash
10 pts/0 00:00:00 ps
其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开。用户可以按Ctrl+d或输入exit命令来退出容器。
对于所创建的bash容器,当用户使用exit命令退出bash进程之后,容器也会自动退出。这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了。
可以使用docker container wait CONTAINER [CONTAINER...]命令来等待容器退出,并打印退出返回结果。
2. 守护模式
更多的时候,需要让Docker容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加-d 参数来实现。
$ docker run -d ubuntu:latest \
/bin/sh -c "while true; do echo hello world; sleep 1; done"
004bf1f645088cf68343b5be852116fc7bc681de31d4c8bee3f3884c497ecf88
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
004bf1f64508 ubuntu:latest "/bin/sh -c 'while t…" 5 seconds ago Up 2 seconds xenodochial_thompson
Last updated
Was this helpful?