Docker学习笔记:Docker容器常用命令

       容器是镜像的一个运行实例。两者不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层。

一、创建容器

       1、新建容器

       docker create:新建一个容器

       create命令命令支持的选项十分复杂,主要包括如下几大类:与容器运行模式相关、与容器和环境配置相关、与容器资源限制和安全保护相关。

       2、启动容器

       docker start:启动一个已经创建的容器

       3、新建并启动容器

       docker run:直接新建并启动容器

       当利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:

       1)检查本地是否存在指定的镜像,不存在就从公有仓库下载;

       2)利用镜像创建一个容器,并启动该容器;

       3)分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;

       4)从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中;

       5)从网桥的地址池配置一个IP地址给容器;

       6)执行用户指定的应用程序;

       7)执行完毕后容器被自动终止。

       通过如下命令可以启动一个bash终端,允许用户进行交互:docker run -it ubuntu:14.04 /bin/bash,其中,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。对于所创建的bash容器,当使用exit命令来退出之后,容器就自动处于退出状态了。

       docker run常见错误码:

       125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;

       126:所指定命令无法执行,例如权限出错;

       127:容器内命令无法找到。

       4、守护态运行

       通过添加-d选项实现后台运行。

二、终止容器

       docker stop:终止一个运行中的容器

       命令格式:docker stop [-t|--time[=10]] [CONTAINER...]

       命令运行时,首先向容器发送SIGTERM信号,等待一段超时时间(默认为10s)后,再发送SIGKILL信号来终止容器。当Docker容器中指定的应用终结时,容器也会自动终止。

       docker restart:将一个运行态的容器先终止,然后再重新启动它。

三、进入容器

       使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。此时,可通过官方的attach或exec命令,以及第三方的nsenter工具等。

       1、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。

       当多个窗口同时用attach命令连到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

       2、exec

       命令格式:docker exec [-d|--detach] [--detach-keys[=[]]] [-i|--interactive] [p--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]

       比较重要的参数有:

       -i,--interactive=true|false:打开标准输入接受用户输入命令,默认为false;

       --privileged=true|false:是否给执行命令以最高权限,默认为false;

       -t,--tty=true|false:分配伪终端,默认为false;

       -u,--user=””:执行命令的用户名或ID。

       在不影响容器内其他应用的前提下,用户可以很容易与容器进行交互。

       3、nsenter工具

       使用nsenter链接之前,需要找到容器进程的PID:PID=$(docker inspect –format “{{ .State.Pid }}” <container>)

       通过PID,连接到这个容器:nsenter –target $PID –mount –uts –ipc –net –pid

四、删除容器

       docker rm:删除处于终止或退出状态的容器

       命令格式:docker rm [-f|--force] [-l|--link] [-v|--volumns] CONTAINER [CONTAINER...]

       主要支持的选项包括:

       -f,--force|false:是否强行终止并删除一个运行中的容器;

       -l,--link=false:删除容器的连接,但保留容器;

       -v,--volumns=false:删除容器挂载的数据卷。

五、导入和导出容器

       1、导出容器

       docker export:导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态

       命令格式:docker export [-o|--output[=””]] CONTAINER,可以通过-o选项来指定导出的tar文件名,也可以直接通过重定向来实现。例如,docker export -o test.tar CONTAINERID,或者,docker export CONTAINERID >test.tar。

       2、导入容器

       docker import:将导出文件导入变成镜像

       命令格式:docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:TAG]]

       docker load是导入镜像存储文件到本地镜像库,docker import是导入一个容器快照到本地镜像库。区别在于容器快照文件将丢弃所有的历史记录和元数据信息(仅保存容器当前的快照状态),从容器快照文件导入时可以重新指定标签等元数据信息,而镜像存储文件将保存完整记录,体积更大。

猜你喜欢

转载自www.cnblogs.com/fantastic-clouds/p/10224057.html