注意:容器刚创建时处于停止状态,我们可以使用start命令启动
我们可以使用docker run 命令直接新建并启动容器
stormfast@ubuntu:~$ docker run ubuntu:14.04 /bin/echo 'hello world' hello worlddocker执行run命令背后的执行了一系列的标准操作: 1. 检查本地是否存在指定镜像,不存在就从公有仓库下载 2. 利用镜像创建一个容器,并启动该容器 3. 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读层 4. 从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中 5. 从网桥的地址池配置一个ip地址给容器 6. 执行用户的指定应用程序 7. 执行完毕后容器被自动终止
注意: 我们使用-d 让docker容器处于守护态(daemonized)形式运行,并使用docker logs命令获取容器输出信息
我们可以使用docker stop [-t|–time[=10] container终止容器 默认情况下 会先给容器发送一个SIGTERM信号,等待超时时间后(默认10秒)会在发送一个SIGKILL信号终止容器
stormfast@ubuntu:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9931b68874a4 ubuntu:14.04 "/bin/sh -c 'while..." 6 minutes ago Up 6 minutes adoring_hawking 6dab2dce48b8 ubuntu:14.04 "/bin/echo 'hello ..." 17 minutes ago Exited (0) 17 minutes ago keen_lichterman 7ce6ec5c3a8a ubuntu:14.04 "/bin/bash" 27 minutes ago Up 26 minutes confident_kirch 99cd2ed8fe20 ubuntu:14.04 "/bin/bash" 2 hours ago Exited (0) 2 hours ago vibrant_edison stormfast@ubuntu:~$ docker stop 9931 9931注意:docker kill 命令会直接发送SIGKILL信号强行终止容器
attach命令
docker attach[–detach-keys[=[]]][–no-stdin][–sig-proxy[=true]]container –detach-keys[=[]] 指定退出attach模式的快捷键,ctrl-p ctrl-q –no-stdin=true|false 是否关闭标准输入, 默认保持打开 –sig-proxy=true|false 是否代理收到的系统信号给应用进程,默认为true
exec命令
docker exec [-d|–detach][–detach-keys[=[]]][-i|–interactive][–privileged][-t|–tty][-u|–user[=USER]] CONTAIN COMMAND [ARG…] -i 打开标准输入接受用户输入命令,默认false –privileged=true|false 是否给执行命令以高权限,默认false -t 分配伪终端,默认false -u 执行命令的用户名或者ID
nsenter工具导出容器
docker export [-o|–output[=”“]] CONTAINER
导入容器
docker import [-c|–changer[=[]]] [-m|–message[=MESSAGE]] file|URL|-[REPOSITORY[:TAG]] 注意:这里的导入容器,最终是导入了一个镜像文件.那么这里的容器导入和镜像导入到底有什么不一样呢? 容器快照文件将会丢弃所有的历史记录和元数据信息,体积相较于镜像导入文件要小.