关闭

Docker基础教程——容器

标签: dockerDocker教程Docker容器Container
909人阅读 评论(0) 收藏 举报
分类:

原文出自:http://blog.csdn.net/anxpp/article/details/52476339

    容器是Docker的另一个核心概念。

    一般来说,镜像的一个运行实例就是容器,容器提供了一个可写的文件层。

    本文同上一篇介绍镜像一样的结构,逐步介绍容器。

    1、创建容器

    Docker的容器非常轻量级,创建和删除都很容易。

    1.1、新建容器

    新建容器使用docker create命令:

docker create -it ubuntu:latest
    此时创建好的容器处于停止状态,使用docker pa -a可以查看容器列表。

    停止的容器可以使用docker start命令启动。

    1.2、启动容器

    启动容器有两种方式:

    1、基于镜像新建容器并启动

    2、启动终止状态的容器

    主要涉及的命令为docker run,等价于先执行docker create,然后执行docker start命令。

    比如:

docker run ubuntu /bin/bash 'hello word'
    会启动容器并输出hello word然后自动终止。

    利用docker run创建并启动容器时,docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中去。
  • 从地址池中分配一个IP给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止
    下面启动一个bash终端与用户交互:

docker run -t -i ubuntu /bin/bash
    -t:让docker分配一个伪终端并绑定到容器的标准输入上。

    -i:让容器的标准输入保持打开。

    交互模式下用户可以通过所创建的中断来输入命令,这和一般linux的中断使用起来是一样的。

    输入exit或者按ctrl+d可以退出容器。

    对于所创建的bash容器,当使用exit命令退出后,docker容器也会自动终止,因为对于docker来说,没有运行中的应用后,容器也没有必要继续运行了。

    1.3、守护态运行

    可以通过-d参数让docker容器在后台以守护态(Daemonized)形式运行。

    比如:

docker run -d ubuntu /bin/bash -c "while true;do each hello word; sleep 1 done"
    使用docker ps命令查看容器信息。

    使用docker logs获取容器的输出信息。

    2、终止容器

    终止一个运行中的命令是docker stop,格式:

docker stop [-t|--time[=10]]
    这时会首先向容器发送SIGTERM信号,等待一段时间后(默认为10s),再次发送SIGNKILL信号终止容器。

    同样的,像刚刚前面说的一样,当Docker容器中指定的应用终结时,容器页自动终止。

    可以通过docker ps命令查看:

docker ps -a -q
    这里参数表示查看所有退出的容器。

    容器(被)终止后,可以通过docker start重新启动。

    而docker restart命令,页如我们所料,会首先终止一个运行态的容器,然后再重新启动它。

    3、进入容器

    启动容器时若加上参数-d会进入后台,无法直接看到容器中的内容。

    如果想进入容器,有多种方法:docker attach命令、docker exec命令以及nsenter工具等。

    3.1、attach命令

    这是Docker自带的命令。

    如果我们有如下运行的容器:

docker run -idt ubuntu
    可以这样进入:
docker attach 容器Name
    但是,当多个窗口(终端)同时attach到一个容器时,所有窗口都会同步显示,当某个窗口因为命令等阻塞后,其他窗口也会被阻塞而不能执行操作。

    3.2、exec命令

    exec是docker中1.3版本开始提供的工具,可以直接在容器中运行命令。

    还是刚刚那个运行的容器的例子,如果想要进入并启动一个bash:

docker exec -ti 容器ID /bin/bash

    3.3、nsenter工具

    nsenter工具包含在util-linux 2.23版本及以后,如果系统中的对应包版本较低,可以如下安装新版:

。。。。。。

    4、删除容器

    删除容器使用docker rm命令,格式为:

docker rm [OPTIONS] CONTAINER [CONTAINER...]
    支持的选项:

  • -f、--force=false:因为运行中的容器默认是不能被删除的,这个参数就是强行终止并删除一个运行中的容器。
  • -l、--link=false:删除容器的连接,但保留容器。
  • -v、--volumes=false:删除容器挂在的数据卷。
    例如,删除终止状态的容器:

docker rm 容器ID
    删除运行中的容器:

docker rm -f 容器ID

    5、导入导出容器

    跟镜像一样,容器也可以导出为一个文件和从文件中导入容器。

    5.1、导出容器到文件

    导出容器是将一个以及从镜像创建为容器的实例导出到一个文件,而不管此时这个容器是否处于运行状态。

    命令为dicker export,格式:

docker export CONTAINER
    一个导出的示例:

docker export 容器ID >导出后的文件名.tar
    然后可以将文件发送到其他地方以实现容器的迁移。

    5.2、从文件导入容器

    对于刚刚导出的容器,对应使用docker import命令导入,然后成为镜像

cat 文件名.tar | docker import - 镜像名字:TAG
    比如:

cat test.tar | docker import - test/ubuntu:v0.0.1
    镜像的导入使用的是docker load,下面是两者的区别:

  • 容器快照文件将丢失所有的历史记录和元数据信息(仅保存容器的快照状态),所以从容器快照导入时一般会重新指定标签等元数据信息。
  •  镜像文件保存完整记录,所以体积页更大。


小结

    容器是直接提供应用服务的组件,操作都非常轻量级,是docker实现快速的启停和高效服务效能的基础。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

docker基础命令之容器篇

什么是容器? 就是镜像的运行时对象 如何创建容器 $ sudo docker create -it ubuntu:latest 7a0c26f96889de46b62766...
  • Soar_Away
  • Soar_Away
  • 2016-08-06 11:31
  • 5104

从Docker零基础到懂一点实践教程(三)

Docker容器容器的基本操作运行镜像以创建Docker容器$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS: - -i: –intera...
  • sch0120
  • sch0120
  • 2016-11-18 17:07
  • 1495

Docker新手入门:基本用法

Docker新手入门:基本用法1.Docker简介1.1 第一本Docker书工作中不断碰到Docker,今天终于算是正式开始学习了。在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少麻烦,...
  • dc_726
  • dc_726
  • 2015-09-04 09:29
  • 24676

Docker基础教程——镜像

原文出自:http://blog.csdn.net/anxpp/article/details/52464806     上一篇文章也说了,镜像是Docker三大核心概念之一。     Docker运...
  • anxpp
  • anxpp
  • 2016-09-08 23:07
  • 1266

Docker基础教程——仓库

仓库是集中存放镜像的地方。 首先说下注册服务器,注册服务器实际上是存放仓库的具体服务器,每个服务器通常会有多个仓库,而每个仓库下又有多个镜像。 比如仓库地址:dl.dockerpool...
  • anxpp
  • anxpp
  • 2016-09-09 22:51
  • 955

Docker基础教程——介绍及核心概念

原文出自:http://blog.csdn.net/anxpp/article/details/52462867     1、介绍     额,介绍我就拉一段百科吧。     Docker 是一个开源...
  • anxpp
  • anxpp
  • 2016-09-07 23:48
  • 1036

Docker基础教程——Dockerfile

Dockerfile是一个文本格式的配置文件,我们可以使用Dockerfile文件快速创建自定义的镜像。 Dockerfile支持的众多指令是本文主要要介绍的内容,之后会给出一个基本示例。 ...
  • anxpp
  • anxpp
  • 2016-09-11 13:23
  • 1258

Docker基础教程——网络基础配置

我们使用Docker发布的组件,通常都离不开网络的,下面介绍Docker的网络基础配置。 1、端口映射 从外部访问容器应用 启动容器时,如果不知道对应参数,在容器外部是无法通过网络...
  • anxpp
  • anxpp
  • 2016-09-10 17:14
  • 892

Docker基础教程(2)简介

简介 Docker可以做什么 重要概念 更多1. 简介Docker是一个开源项目,它在linux操作系统上提供了一个软件抽象层和操作系统层虚拟化的自动管理机制。Docker利用了Linux的资源分托机...
  • u014303046
  • u014303046
  • 2017-08-04 09:10
  • 170

Docker基础教程(5)进阶命令-2-DockerFile

初遇Dockerfile 更多Dockerfile命令 小结1. 初遇Dockerfile在之前的教程里,我们展示了2种获得镜像的方法:一种是直接从Docker store上面pull,一种是先运行一...
  • u014303046
  • u014303046
  • 2017-08-05 11:01
  • 181
    个人资料
    • 访问:743251次
    • 积分:5450
    • 等级:
    • 排名:第5716名
    • 原创:96篇
    • 转载:1篇
    • 译文:0篇
    • 评论:290条
    博客专栏
    其他信息