一、启动容器方式
1. 基于镜像新建一个容器并启动
docker run [OPTIONS] 镜像名 [COMMAND] [ARG]
OPTIIONS
: 命令选项,最常用的包括-d
后台运行容器并返回容器ID
,-i
以交互模式运行容器,-t
为容器分配一个伪输入终端,--name
指定启动容器的名称。COMMAND
: 设置启动命令,该命令在容器启动后执行。ARG
: 其他一些参数。
例如:
docker run ubuntu:14.04 echo 'hello docker'
docker run的工作:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载启动;
- 利用镜像创建并启动一个容器;
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层;
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
- 从地址池配置一个
ip
地址给容器; - 执行用户指定的启动命令;
- 执行完毕后容器被终止。
2. 如何才能使容器启动后不立即终止?
docker run -it --name firstContainer ubuntu /bin/bash
执行完这条命令后,创建并启动容器之后,执行/bin/bash
,会启动一个子进程,此时父进程(也就是容器的主进程sh
)会进入sleep
状态,由于sleep
状态不是终止状态,所以容器会继续运行。
为什么在容器中输入exit
或者执行ctrl D
后,容器将会终止呢,这是因为exit
会退出(结束)当前进程,也就是/bin/bash
,由于子进程结束,sh
主进程恢复到运行态,然而由于没有命令需要继续执行,所以sh
主进程结,因此容器终止。
3. 重新启动在终止状态(
stopped
)的容器
docker start [OPTIONS] 容器 [容器2...]
OPTIIONS
: 命令选项;容器
: 用“容器ID
”或“容器名”表示
// 启动名为firstContainer的容器
docker start firstContainer
二、查看容器信息
// 显示所有运行中的容器,包括容器ID,基础镜像,启动命令,创建时间,当前状态,端口号,容器名字
docker ps
启动命令为“/bin/bash
”,创建时间为1分钟之前,当前状态为“Up about a minute
”,也就是已经运行了2分钟了.
// 查看Docker环境中所有的容器,包括已经停止的容器
docker ps –a
参考:https://www.educoder.net/shixuns/oiwsvgpf/challenges