Docker 容器

容器是 Docker 的另一个核心概念。
简单地说,容器是镜像的一个运行实例,所不现的是,它带有额外的可写文件层。
下面将具体介绍容器的重要操作,包括创建一个容器、启动容器、终止一个容器、进入容器内执行操作、删除荣器和通过导入导出容器来实现容器迁移等。

创建容器

新建容器

使用 docker create 命令新建一个容器
root@localhost:~# docker create -it ubuntu:latest

Paste_Image.png

使用docker create 命令新建的容器处理停止状态,使用docker start 命令启动它。

新建并启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另一个是将终止状态(stopped)的容器重新启动。所需的命令主要为docker run ,等价于先执行docker create 命令,再执行 docker start 命令。
例如,下面的命令输出一个“ Hello World”,之后容器自动终止。
root@localhost:~# sudo docker run ubuntu /bin/echo 'Hello world'
Hello world
下面的命令则启动一个bash 终端,允许用户进行交互:
root@localhost:~# sudo docker run -t -i ubuntu:14.04 /bin/bash
root@2af4b41755da:/#
用户按 Ctrl+d 或输入 exit 命令来退出容器
root@2af4b41755da:/# exit
exit
对于所创建的 bash 容器,当使用 exit 命令退出之后,该容器就自动处理终止状态了。

守护态运行

我们可以添加 -d 参数来实现
例如下面的命令会在后台运行容器:
root@localhost:~# sudo docker run -d ubuntu /bin/sh -c "While true; do echo hello world; sleep 1; done"
通过 docker ps -a 来查看容器信息:

Paste_Image.png

终止容器

使用 docker stop 来终止一个运行中的容器,命令格式为 docker stop[-t | --time [=10]]。它先向容器发送SIGTERM 信号,等待一段时间后(默认为10秒),再发送 SIGKILL 信号终止容器。

注意:docker kill 命令会直接发送SIGKILL 信号来强行终止容器。

使用docker ps -a -q 命令看到处于终止状态的容器的ID信息。例如:
root@localhost:~# sudo docker ps -a -q
c15ad4a50766
2af4b41755da
f186c6b5ba12
处于终止状态的容器,通过 docker start 命令来重新启动
root@localhost:~# sudo docker start c15
c15
docker restart 命令会将一个运行态的容器终止,然后再重新启动它:
root@localhost:~# sudo docker restart c15
c15

进入容器

在使用 -d 参数时,容器启动后会进客户后台,用户无法看到容器中的信息。下面为大家介绍进入容器进行操作的多种方法:

attach 命令

docker attach 是 Docker 自带的命令。示例:

Paste_Image.png

使用attach命令有时不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

exec 命令

该命令可以直接在容器内运行命令。例如进入到刚创建的容器中,并启动一个bash:
root@localhost:~# sudo docker exec -ti 2ba8459942c5 /bin/bash
root@2ba8459942c5:/#

删除容器

使用 docker rm 命令删除处理终止状态的容器,命令格式

  • -f 强行终止并删除一个运行中的容器
  • -l 删除容器的连接,但保留容器
  • -v 删除容器挂载的数据卷。
    例如:,查看处理终止状态的容器并删除:
    root@localhost:~# sudo docker ps -a
    root@localhost:~# sudo docker rm fef8faf0cef7
    如果要删除一个运行中的容器加 -f 参数。Docker会发送 SIGKILL 信号给容器,终止其中的应用:
    root@localhost:~# sudo docker rm -f 04e7d4d6cd1b

导入和导出容器

导出容器

导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处理运行状态,可以使用dokcer export 命令,格式为:docker export CONTAINER.
查看所有容器如下所示:

Paste_Image.png

分别导出2ba8459942c5容器和c15ad4a50766容器到test_for_run.tar文件和test_for_stop.tar文件。
root@localhost:~# sudo docker export 2ba >test_for_run.tar
root@localhost:~# sudo docker export c15 >test_for_stop.tar

导入容器

导出的容器使用 docker import 命令导入, 成为镜像

Paste_Image.png

小结

容器是直接提供应用服务的组件,也是 Dokcer 实现快速的启停和高效服务性能的基础。
在生产环境中,建议使用HAProxy 工具来代理容器访问,这样在容器出现故障时,可以快速切换到其他容器,还可以自动重启故障容器。

参考文档

《Docker 技术入门与实战》第4章 容器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一,小王对于容器的困惑 小王刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处。比如: 1、...
    架构师小秘圈阅读 8,490评论 0 24
  • 目录 创建容器 启动容器 停止容器 进入容器 删除容器 容器迁移 1. 创建容器 docker创建容器可以用doc...
    garyond阅读 1,043评论 0 1
  • 多年以前,和老梁聊天,他说情感只是一个维度,万物皆可量化,我是非常惊愕和抵触的。 但是,谁说情感不能建模呢?骗子最...
    咸叔说阅读 231评论 0 1
  • 所谓难过 就是感觉心像被一只手紧紧的攥着 努力的挣扎着抽搐 喉咙里有种叫哽咽的东西 在努力的冲出来 眼睛模糊 鼻...
    just黑阅读 167评论 0 0
  • 我们每天都在做决定,无论大事小事。我们决定今天要做什么,决定今天早中晚吃什么……对于小事,比如决定今天吃什么,我们...
    媛媛菇凉阅读 358评论 0 0