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是导入一个容器快照到本地镜像库。区别在于容器快照文件将丢弃所有的历史记录和元数据信息(仅保存容器当前的快照状态),从容器快照文件导入时可以重新指定标签等元数据信息,而镜像存储文件将保存完整记录,体积更大。
Docker容器常用命令的更多相关文章
- Docker容器常用命令汇总
Docker常用命令总结如下: # 查看docker详细信息 docker info # 获取当前节点所有容器 docker ps -a # 管理容器生命周期 docker [start|stop|r ...
- 3.docker容器常用命令
docker容器的常用命令 docker有很多命令,让我们一个一个全部背下来,基本是不可能的,帮助文档的作用就很大了,想要查询那个命令,直接去找帮助文档,帮助文档地址:https://docs.doc ...
- Docker容器管理——Docker容器常用命令
1.查看所有的容器 docker ps 2.查看运行的容器 docker ps -a 3.启动.停止.重启docker容器 docker start ... docker stop ... docke ...
- Docker:常用命令大全 [七]
一.docker的命令的解释 1.命令解释 docker run -d -p 80:80 nginx run (创建并运行一个容器) -d 放在后台 -p 端口映射 nginx docker镜像的名字 ...
- Docker Kubernetes 常用命令
Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...
- Docker(二十二)-Docker Swarm常用命令
#查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...
- Dockerfile指令及docker的常用命令
DockerfileFROM: FROM <image> FROM <image>:<tag> MAINTAINER: MAINTAINER <name> ...
- Docker Swarm常用命令
#查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...
- Docker学习(三)认识Docker和常用命令
Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...
随机推荐
- StringEscapeUtils对字符串进行各种转义与反转义
项目过程中导出的word无法打开,发现是由于里面有&字符造成,需要进行HTML字符的转义: StringEscapeUtils.escapeHtml4(“需要转义的字符”); 已解决. 参考: ...
- python----操作文本文件
一.文本文件基本操作 1.1 打开文本文件,得到文件句柄并赋值给一个变量 f = open('test', 'r', encoding='utf-8') # 默认打开模式为r 文件路径:相对路径.绝对 ...
- 【转】.Net Core中的Api版本控制
原文链接:API Versioning in .Net Core 作者:Neel Bhatt 简介 Api的版本控制是Api开发中经常遇到的问题, 在大部分中大型项目都需要使用到Api的版本控制 在本 ...
- day16_python_1124
圈子 圈子是互相影响,走着走着就散了. 道不同不相为谋,与人的认知相关. 圈子如何正向引导? 圈子能决定你的人生走向. 圈子能决定你的格局. 01 昨日内容回顾 序列化模块 将一个数据结构 ----& ...
- idea:打包jar(原文by曲高终和寡)
idea打包java可执行jar包 1,在项目上鼠标右键 --> Open Module Settings 2, Artifacts --> + --> JAR --> F ...
- K2在Gartner 2017 iBPMS魔力象限报告中上升为“挑战者”
在Gartner近期发布的iBPMS MQ报告中,Gartner分析了入选的19家厂商,将K2列为智能业务流程管理系统(iBPMS)MQ(魔力象限)的“挑战者”.从下列图中可以看出,相比上期,K2从魔 ...
- 面试题--Java
&与&&区别? &与&&都是逻辑运算符,都是判断两边为真则为真,两边为假则为假,但是&&如果第一个条件不成立的话,后面的将不会再继续执行 ...
- Mosquitto-1.5在Linux上的安装以及Android客户端的实现
一.关于MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的" ...
- ADO.NET 中的五个主要对象
Connection:主要用来开启程序和数据库的连接 Command:主要是用来对数据库发出一些指令,. DataAdapter;主要在数据源以及DataSet之间执行数据库的传输工作 DataSet ...
- CT ubuntu 16.04安装 adobe flash player
sudo apt-get install flashplugin-installer chrome 升级 chrome://chrome-urls/ chrome://components/ 找到A ...