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

一、创建容器

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. [LeetCode]题100:Same Tree

    Given two binary trees, write a function to check if they are the same or not. Two binary trees are ...

  2. 『Python CoolBook:Collections』数据结构和算法_容器型value字典&顺序字典

    一.collections.defaultdict:多值映射字典 defaultdict省去了初始化容器的过程,会默认value对象为指定类型的容器 指定list时可以使用.append, from ...

  3. 完美解决xhost +报错: unable to open display "" 装oracle的时候总是在弹出安装界面的时候出错

    详细很多朋友在装oracle的时候总是在弹出安装界面的时候出错,界面就是蹦不出来. oracle安装 先切换到root用户,执行xhost + 然后再切换到oracle用户,执行export DISP ...

  4. springcloud-Eureka-服务注册与发现核心组件

    Eureka组件 Eureka是Netfilx开源的服务发现组件,本身是一个基于rest的服务,它包含client和server两部分. Spirng Cloud将它集成在子项目Spirng Clou ...

  5. ceph问题总结

    之前测试用ceph总是警告 health HEALTH_WARN pool cephfs_metadata2 has many more objects per pg than average (to ...

  6. layui布局器网站工具

    http://layuiout.magicalcoder.com/magicaldrag-admin/drag

  7. servlet邮箱激活验证实例含代码

    也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到 ...

  8. tcl脚本直接执行脚本中中文识别不了的处理

    上一篇说tcl中文乱码是因为我写了个bat调用该脚本,但是脚本中的中文路径是乱码.今天刚好有时间进行解决下: 首先看看调用代码 "./bin/base-tcl8.6-thread-win32 ...

  9. groupadd语法

    groupadd [选项] 组 创建一个新的组.Groupadd命令使用命令行中指定的值加上系统默认值创建新的组账户.新组将根据需要输入系统. (1).选项 1 2 3 4 5 6 7 -f,--fo ...

  10. 3070 Fibonacci

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21048   Accepted: 14416 Descr ...