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

一、创建容器

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

Docker容器常用命令的更多相关文章

  1. Docker容器常用命令汇总

    Docker常用命令总结如下: # 查看docker详细信息 docker info # 获取当前节点所有容器 docker ps -a # 管理容器生命周期 docker [start|stop|r ...

  2. 3.docker容器常用命令

    docker容器的常用命令 docker有很多命令,让我们一个一个全部背下来,基本是不可能的,帮助文档的作用就很大了,想要查询那个命令,直接去找帮助文档,帮助文档地址:https://docs.doc ...

  3. Docker容器管理——Docker容器常用命令

    1.查看所有的容器 docker ps 2.查看运行的容器 docker ps -a 3.启动.停止.重启docker容器 docker start ... docker stop ... docke ...

  4. Docker:常用命令大全 [七]

    一.docker的命令的解释 1.命令解释 docker run -d -p 80:80 nginx run (创建并运行一个容器) -d 放在后台 -p 端口映射 nginx docker镜像的名字 ...

  5. Docker Kubernetes 常用命令

    Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...

  6. Docker(二十二)-Docker Swarm常用命令

    #查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...

  7. Dockerfile指令及docker的常用命令

    DockerfileFROM: FROM <image> FROM <image>:<tag> MAINTAINER: MAINTAINER <name> ...

  8. Docker Swarm常用命令

    #查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...

  9. Docker学习(三)认识Docker和常用命令

    Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...

随机推荐

  1. java课堂笔记3

  2. hibernate环境搭建及操作

    一.导入jar包.1.hibernate的jar包2.jdbc的jar包 二.配置Hibernate.建立hibernate.cfg.xml mysql配置如下: <!DOCTYPE hiber ...

  3. MCNN多层神经网络论文笔记

    论文原文 https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Zhang_Single-Image_Crowd_Coun ...

  4. static静态全局变量和static静态局部变量

    static静态全局变量: 静态全局变量就是将全局变量变成静态的.如何变?——全局变量加个static. static就是一个存储类说明符,a这个全局变量就成了一个静态全局变量了. 静态全局变量的特点 ...

  5. L335 Nasa’s Twin Study Reveals Effects of Time Spent in Space on the Human Body

    What exactly happens to a human body in space? Despite decades of astronauts going on space missions ...

  6. [Spring Boot]什么是Spring Boot

    <Spring Boot是什么> Spring Boot不是一个框架 是一种用来轻松创建具有最小或零配置的独立应用程序的方式 用来开发基于Spring的应用,但只需非常少的配置. 它提供了 ...

  7. 获取Ueditor里面的图片列表,地址绝对化

    /**     * 内容中图片地址转成绝对地址     * @param $content     * @return mixed     */    private function imgUrl( ...

  8. How Region Split works in Hbase

    A region is decided to be split when store file size goes above hbase.hregion.max.filesize or accord ...

  9. javascript继承的6种方法

    1原型式继承 简介:对类式继承的封装,过渡对象相当于子类. function inheritObject(o) { //声明过渡函数对象 function F() {} //过渡对象的原型继承父类 F ...

  10. ubuntu yolov2 训练自己的数据集

    项目需求+锻炼自己,尝试用yolov2跑自己的数据集,中间遇到了很多问题,记下来防止忘记 一.数据集 首先发现由于物体特殊没有合适的现成的数据集使用,所以只好自己标注,为了减少工作量,先用opencv ...