Docker应用之容器
容器是独立运行的一个或一组应用,以及他们的运行态环境
1、启动容器(基于镜像新建一个容器并启动或将终止状态的容器重新启动)
run后面添加--name参数可以指定容器的名称,否则系统默认会给名称;使用docker rename 原容器名称 新名称 来修改容器名称
1)、新建一个容器并启动
下面命令执行完命令后,容器立即终止
docker run ubuntu:14.04 /bin/echo 'Hello World'
下面命令进入一个交互型容器
docker run -t -i ubuntu:14.04 /bin/bash
其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开
在交互模式下,用户可以通过所创建的终端来输入命令,如

当利用docker run 来创建容器时,Docker在后台运行的标准操作包括
检查本地是否存在指定镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个IP地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
2)、使用docker start [容器或ID]命令启动一个终止的容器,这个还没有研究
容器的核心是执行的应用程序,所需要的资源都是应用程序所必需的,没有其他无用的资源;在伪终端中可以使用ps或top命令查看进程信息(进程、进程)

可见容器中只运行了指定的应用,这就是货真价实的轻量级虚拟化
2、守护态运行,注意如果启动后的命令执行完,进程便关闭,-d只是后台运行,运行完就关闭
如果不想让容器进程关闭,需要一直使用该进程,
如下面例子,启动容器命令是docker run -d ubuntu:14.04,执行的命令是/bin/sh -c "while true;do echo hello world;sleep 1;done"
命令中有while true语句,所以容器进程不会关闭,也就是下面查看logs就一直有hello world
通过添加-d 参数来实现Docker容器在后台以守护态(Daemonized)形式运行
docker run -d ubuntu:14.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
后面的-c 是shell命令,执行后面的shell语句
docker ps命令查看运行的容器

使用docker logs 加上运行容器的名称,查看输出信息

3、终止运行的容器,应用终结时,容器会终止,使用exit或Ctrl+d退出终端时,容器也会终止,使用docker stop命令也可以终止运行的容器
docker ps -a 命令查看所有容器
docker stop [容器名称或容器ID] 命令来终止运行的容器
docker start [容器名称或容器ID] 命令可以启动已终止的容器(启动方式依据该容器创建时候方式)

docker restart [容器名称或容器ID] 命令先终止后启动容器
4、进入容器(docker attach命令或nsenter工具等)
1)、docker attach命令,在多窗口同时attach到同一个容器的时候,所有窗口都会同步显示,当某个窗口因命令阻塞时,其他窗口也无法执行操作了

2)、nsenter命令
安装
cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2./util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24;
./configure --without-ncurses
make nsenter && cp nsenter /usr/local/bin
其中有可能在configure时候会出现如下错误,那就需要安装所需插件

使用
nsenter可以访问另一个进程的名字空间,nsenter要正常工作需要root权限
下面只举一个完整例子(获取PID方式还可以通过docker top [容器名或ID])
$ sudo docker run -idt ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
243c32535da7 ubuntu:latest "/bin/bash" seconds ago Up seconds nostalgic_hypatia
$ PID=$(docker-pid 243c32535da7) $ sudo nsenter --target --mount --uts --ipc --net --pid
root@243c32535da7:/#
还可以使用docker-enter [容器名称或ID] shell命令 ,在容器内执行命令
5、导入导出容器(区别于镜像的存储与载入,导入导出容器是操作容器快照;容器快照文件将丢弃所有历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也大)
1)、导出容器快照到本地,命令如下,docker export [容器名称或ID]
docker export >ubuntu.tar

2)使用docker import 从容器快照导入为镜像,命令如下
cat ubuntu.tar | docker import - test/ubuntu:v1.
或
docker import ubuntu.tar test/ubuntu:v1.

也可以通过指定URL或某个目录来导入,如
docker import http://example.com/exampleimage.tgz example/imagerepo
注意:docker load 通过导入镜像存储文件到本地镜像库,也可以通过docker import 导入一个容器快照到本地镜像库;区别在于镜像存储文件包含完整记录,容器快照丢弃了所有历史记录和元数据
6、删除容器
删除一个终止的容器,命令如下,docker rm [容器名称或ID]
docker rm 3ba302
如果强制删除一个正在运行的容器,要加参数 -f
docker rm -f 3ba302
7、退出容器并关闭容器进程
使用ctrl+d或exit命令
8、退出容器但不关闭进程
1)、使用ctrl+p,q或ctrl+p,ctrl+q
2)、再开启一个当前运行容器的伪终端,那个容器一定是在运行中,然后执行退出后使用ctrl+d或exit,就会退出当前这个容器的使用exec启动的终端
如果再次attach容器后使用ctrl+d或exit就会退出容器,关闭进程了,这种方法只能说是变相的实现
docker exec是在系统中对正在运行的容器进行命令操作,可参考菜鸟教程
docker exec -it [CONTAINER_NAME or CONTAINER_ID] /bin/bash
Docker应用之容器的更多相关文章
- docker:从 tomcat 容器连接到 mysql 容器
docker 中的容器互联是一个较为复杂的话题,详细内容将在后续章节中介绍. 续前 2 个章节的内容,我们创建了一个 mysql 容器和一个 tomcat 容器,可以使用 「docker ps」来查看 ...
- 阿里云部署Docker(7)----将容器连接起来
路遥知马力.日久见人心.恩. 该坚持的还是要坚持. 今天看到一个迅雷的师弟去了阿里,祝福他,哎,尽管老是被人家捧着叫大牛.我说不定通过不了人家的面试呢.哎,心有惭愧. 本文为本人原创,转载请表明来源: ...
- Docker背后的容器管理——Libcontainer深度解析
Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces.cgroups.capabilities以及文件系统来进行容器控制.你可以使用Libcon ...
- Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- Docker进阶之五:容器管理
容器管理 一.创建容器常用选项 docker container --help 指令 描述 资源限制指令 -i, --interactive 交互式 -m,--memory 容器可以使用的最大内存量 ...
- docker镜像和容器的导出导入
本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...
- Docker 核心技术之容器
什么是容器 容器(Container) 容器是一种轻量级.可移植.并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器.容器 ...
- docker container(容器)
docker 容器 Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用 容器是从镜像创建的应用运行实例.它可以启动,开始,停止,删除,而这些容器都是彼此相互隔离,互不可见的. ...
- Docker系列01—容器的发展历程---Docker的生态圈
本文收录在容器技术学习系列文章总目录 Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker ...
- Docker 学习1 容器技术基础入门
一.虚拟化 1.主机级别虚拟化(两种) a.类型一虚拟化:在硬件上直接安装hyper-ver,然后再安装虚拟机 1).操作系统就两棵树:进程树,文件系统树. 2).一个内核只能有一个root b.类型 ...
随机推荐
- ASP.NET中使用jQuery插件实现图片幻灯效果
参照网上的资料及提供的jQuery插件实现图片幻灯效果. 1.页面前台代码: //头部引用 <head runat="server"><title>< ...
- 关于Unity中定时器的简易使用
定时器 一段指定的时间后执行某个函数或者某个语句 用法 //定时器写法1 flaot total_time; void Update(){ this.total_time += (Time.delta ...
- 关于Unity中物理检测的准备
1.要确定每个物体的碰撞类型,是有碰撞效果的碰撞还是没有碰撞效果的碰撞(is trigger),带不带刚体. 2.给每个物体分层,再设置哪些层会发生碰撞,哪些完全不产生碰撞. 3.给每个物体设置标记, ...
- 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息
第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...
- 性能优化系列二:JVM概念及配置
一.虚拟机组成 虚拟机主要由三部分组成:编译器(执行引擎),堆与栈. 1. 编译器 编译器分为即时编译器与解释器. 即时编译器将代码编译成本地代码存于code区.因此它快,但它有内存限制! 解释器逐行 ...
- Maven 构建配置文件
什么是构建配置文件? 生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值.使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建. 配置文件中指定 pom.xml ...
- Lemon OA第2篇:功能解析方法
Lemon OA,整个系统功能也算是比较丰富,OA的很多功能都能看见影子,虽然做得不是很强大 接触Lemon OA,起源于Activiti的学习热情,既然这样,研究Lemon OA的目标有3: 1.L ...
- Cisco交换机端口聚合(EtherChannel)
端口聚合,英文简称EtherChannel(以太通道)是由Cisco研发的,应用于交换机之间的多链路捆绑技术.它的基本原理是: 将两个设备间多条物理链路捆绑在一起组成一条逻辑链路,从而达到带宽倍增的目 ...
- 简明Linux命令行笔记:touch
创建文件或修改文件时间 touch [options] file-list 参数 file-list是touch将要创建或更新的文件路径名 选项 -a 只更新访问 ...
- perl 查看某个模块的安装路径
perldoc 命令可以查看某个模块的安装路径 命令: perldoc -l Bio::Seq 返回值如下: /usr/local/share/perl5/Bio/Seq.pm