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

一、创建容器

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. mysql查看配置生效

    mysql> show status like 'Threads%';+-------------------+-------+| Variable_name     | Value |+--- ...

  2. 在 .NET 项目中集成 SwaggerUI(2018.9.30)

    不多说,直接上教程! 1. 打开NuGet管理器搜索并安装 Swashbuckle和Swagger.Net两项 2. 修改生成设置 3. 修改SwaggerConfig文件 (1)去除注释 c.Inc ...

  3. 【PAT】我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...

  4. hadoop之安装

    在Linux环境下安装Hadoop:    一.安装环境 硬件:虚拟机 操作系统:Centos 6.4 64位 IP:192.168.153.130主机名:imooc安装用户:root        ...

  5. linux 安装配置zookeeper

    1.什么是zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用 ...

  6. quartz的job怎么获取Spring上下文

    第一步.在org.springframework.scheduling.quartz.SchedulerFactoryBean对象中注入applicationContextSchedulerConte ...

  7. Java JRT

    解释器 运行步骤: 找到环境变量CLASSPATH,CLASSPATH包含一个或者多个目录,用作查找.class文件的根目录 从根目录开始,解释器获取包名并将每个.替换成\或/(取决于操作系统) 得到 ...

  8. Python基础综合练习

    from turtle import * def draw(x): begin_fill() for i in range(5): forward(x) right(144) end_fill() d ...

  9. MySQL 用户连接与用户线程

    本文转载自公众号数据库随笔,作者happypig 微信看起来麻烦 pig已经好长一段时间没有分享文章了,有点对不起订阅的朋友.最近在做比较复杂跟困难的事情,也并不一定最终会有成果,因此必须对此沉默. ...

  10. Android stdio 报错 error invoking main method

    打开Android stdio失败 报错:error invoking main method 想想前一天做了什么事?? 昨天把企图把Android Stdio文件包移盘,但是中途截止了,也就是说移动 ...