Docker 快速上手系列(2): 容器的概念及相关操作

什么是容器

简单的说,一个镜像想要跑起来需要一个载体,这个载体就是容器,前面的文章我们也提到了,容器加载镜像后会启动一个额外的可写文件层。

我们拿VM举例,VM虚拟的是整个操作系统,然后可以在里面跑引用,容器其实运行的是一个应用或是一组应用,并提供应用所必须的运行环境

创建一个容器

Docker启动一个容器是秒级别的,这也是比VM有有事的一点,所以这里允许用户随时创建,删除,启动,切换容器,这也是体现Docker“轻”的一点

#启动一个容器有两种情况
#第1种是基于镜像创建一个容器并启动
docker create -ti ubuntu:14.04 #创建一个容器

#第2种是启动一个“终止态”的容器
docker run ubuntu:14.04 /bin/echo "hello bugall"

当我们执行docker run创建并启动时,Docker在后台运行的标准操作是哪些,这里官方文档中给出了介绍:

1.检查加载的镜像本地是否存在,如果不存在就自动从远端仓库下载

2.利用指定的镜像创建一个容器

3.给该容器分配一个文件系统,在该镜像上挂载一个可读可写层(应为镜像是只读的)

4.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中

5.从地址池中配置一个IP地址给容器

6.执行用户制定的应用程序

7.执行完毕后容器被终止

docker run -ti ubuntu:14.04 /bin/bash
#-t 选项让docker分配一个伪终端并绑定到容器的标准输入上,
#-i 则让容器的标准输入保持打开

Ctrl+d退出

守护态运行

docker run -tid ubuntu:14.04 /bin/bash
#-d 让容器以保护态打开,Ctrl+d退出后容器不关闭

终止,启动容器

docker stop [-t|--time[=10]]
#首先向容器发送SIGTERM信号,等待一段时间后(默认是10秒),在发送SIGKILL信号终止容器

当容器中制定的应用程序终结后,容器也会自动终止。

docker run -ti ubuntu:14.04 /bin/bash 我们Ctrl+d 终止的是/bin/bash这个应用而不是容器,为什么容器会自动退出并关闭呢?这就是因为容器启动时制定的应用程序关闭了。

有停止就有启动,我们看看怎么启动一个处于终止状态的容器

docker start CONTAINER_ID #启动处于终止态的容器
docker restart CONTAINER_ID #重启一个容器

进入容器

docker run -tid ubuntu:14.04 /bin/bash

-d参数用户启动容器后无法看到容器中的信息,有些时候我们需要进入容器进行一些操作,这里介绍下进入容器的方法方式

  • attach 命令

    注意:

    官方对attach说到了这么一个特性:当多个窗口同时attach到同一个容器的时候,所有的窗口会同步显示。当一个窗口阻塞时,其它窗口也无法操作

  • Docker 1.3版本开始就已经提供了另外一中进入容器的方法exec

    docker exec -ti CONTAINER_ID /bin/bash

删除容器

    docker rm [options] container [container...]
    -f : --force=false 强制终止并删除一个运行中的容器
    -l : --link=false 删除容器的连接,但是包容起
    -v : --volumes=false 删除容器挂载的数据卷

#如果要删除一个运行中的容器,可以添加-f参数,docker会发送SIGKILL信号给容器,终止其应用

导入导出容器

前面的文章中提到了导入导出镜像,容器也有导入导出功能,这里的导出是指,把一个容器以文件的形式导出,无论这个容器是否处于运行状态。注意这里的导入是以镜像的形式导入的。

    #导出
    docker export CONTAINER > SIGN.tar

    #导入
    docker import - ubuntu.14.04.1
    #应为是以镜像的形式导入的所有可用 docker images 命令查看
时间: 2024-10-10 05:13:56

Docker 快速上手系列(2): 容器的概念及相关操作的相关文章

Docker 快速上手系列(3): 仓库的概念及相关操作

Docker Hub 首先我们先区分下两个概念,一个是仓库,一个是注册服务器. Docker里仓库是集中存放镜像的地方,而注册服务器是放仓库的, 一个注册服务器可以存放多个仓库,例如: dl.dockerpool.com/ubuntu #注册服务器的地址是dl.dockerpool.com #仓库的名字是ubuntu 什么是Docker Hub,如果你用过Github,其实Docker Hub和Github 类似,前者是存放管理镜像的地方,后者是存放管理代码的地方.其实 现的方式是一样的. 可以

Docker 快速上手系列(4): 数据卷,数据卷容器的概念及相关操作

引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷 数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(mount)) 创建数据卷 在用Docker ru

Docker 快速上手系列(5): 网络基础配置和容期间通信

引子 一个web服务跑起来必不可少的两大功能模块:业务处理,数据服务,大型的web服务需要的组件更多,这往往需要多个容器,但是我们还需要这些容器之间可以进行网络通信,相互配合. Dokcer目前只支持宿主机与容器通信,容器与容器之间通信. 宿主机与容器的端口映射 在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-p参数来制定端口映射.当使用-p标记时,Docker会随机映射一个4900

Microsoft Azure 快速上手系列(繁体中文视频)

Microsoft Azure 快速上手系列 https://channel9.msdn.com/Series/Microsoft-Azure-Quickstart 视频可能没法直接看,不过可以下载mp4 只做优秀知识的搬运工

Docker 快速上手:用 Docker + GitBook 写书

By Falcon of TinyLab.org 泰晓沙龙第二期 @ 2015/04/26 准备 GitBook 环境 安装 Docker 以Ubuntu为例 $ echo deb http://get.docker.io/ubuntu docker main | sudo tee /etc/apt/sources.list.d/docker.list $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D786

Docker快速上手之部署SpringBoot项目

Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”. Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的.将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了

Swift开发快速上手系列教程目录-陆续完善,由浅入深

Swift开发教程 一.Swift基础 Swift教程01-使用switfc终端命令编译运行swift程序 Swift教程02-抓住下一个浪潮之巅 Swift教程03-playground剖析swift语言 Swift教程04-定义声明变量重要原则 Swift教程05-基本数据类型(一)整型浮点型 Swift教程06-基本数据类型(二)Bool布尔类型对比Java-boolean,Objc-BOOL Swift教程07-基本数据类型(三)元组类型tuple Swift教程08-基本数据类型(四)

SpringBoot快速上手系列01:入门

1.环境准备 1.1.Maven安装配置 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. 下载Maven可执行文件 cd /usr/local sudo wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz sudo tar zxvf ./apache-maven-3.6.3-bi

docker技术剖析--镜像、容器管理

防伪码:博观而约取,厚积而薄发                                 docker技术剖析--镜像.容器管理 一.Docker简介 Docker是什么? Docker的英文本意是"搬运工",在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的.可移植的.自管理的组件,可以在任何主流系统中开发.调试和运行. 说白了,docker是一种用了新颖方式实现的轻量级虚拟机,