使用OpenStack管理Docker容器(一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文讲的是使用OpenStack管理Docker容器(一),【编者的话】本文将讲述如何使用OpenStack创建并管理Docker,有3种流行的使用方法,使用的分别是Nova Docker驱动,Heat Docker插件,以及Magnum。
本文讲的是使用OpenStack管理Docker容器(一) 【编者的话】本文将讲述如何使用OpenStack创建并管理Docker,有3种流行的使用方法,使用的分别是Nova Docker驱动,Heat Docker插件,以及Magnum。这篇文章分成2部分,第一部分,将主要介绍Nova Docker驱动的用法。第二部分,是关于Heat Docker插件和Magnum。这是序列文章的第一部分。

在这篇文章中,我将介绍一些不同的方法,这些方法是关于OpenStack如何创建,以及管理Docker容器。三种主要的方法分别使用的是Nova Docker驱动,Heat Docker插件,以及Magnum。Magnum比较新颖,现在仍在开发中。OpenStack是开源云编排软件,Docker则是一个开源的容器管理软件。文章中,我假设用户已经熟悉OpenStack和Docker。如果不熟悉的话,那么网上有许多资料可以用来学习OpenStack和Docker,我的博客也可以找到关于 OpenStack Docker 的文章。

Nova Docker Driver

Nova通常用来管理虚拟机。在这种方法中,Nova驱动将会进行扩展,以便用来催生Docker容器。接下来是Nova Docker wiki里面提及的架构示意图。

odocker1.png

  • 为了催生容器,Nova计算驱动将指向Docker。
  • Nova Docker Virt驱动使用http api与Docker进行对话
  • Docker镜像保存在Docker Registry中,并且从这里暴露给Glance,Nova将会使用Docker Registry创建容器。

Nova Docker 驱动与Devstack

我按照 wiki 里面提到的步骤,在OpenStack Devstack kilo下获取Nova Docker驱动。为了使其可以在我的系统下正常工作,要进行一些镜像调整。我在Virtualbox下使用Ubuntu 14.04进行下列测试,下面是一些主要步骤:
  1. 安装Docker
  2. 安装Nova Docker插件
  3. 进行Devstack的堆叠
  4. 安装Nova-Docker rootwrap过滤器
  5. 应用Kilo解决方案
  6. 创建Docker镜像,并将其暴露给Glance
  7. 由Nova催生Docker容器

1. 安装Docker

Docker可以使用 这里 提到的步骤进行安装。下面是我系统上使用的版本,我已经开启用户访问,这样我就不需要在每个Docker命令中运行sudo。
$ docker --version
Docker version 1.6.2, build 7c8fca2

2. 安装Nova Docker插件

wiki里面提到的步骤可以出色的工作。当我在查看驱动时,我使用的是稳定版本的kilo。
git clone -b stable/kilo https://github.com/stackforge/nova-docker.git

下面是安装成功后,Nova Docker插件的版本号
$ sudo pip list | grep nova-docker
nova-docker (0.0.1.dev197)

3. 进行Devstack的堆叠

首先,检查Devstack Kilo的代码库。
git clone -b stable/kilo https://github.com/openstack-dev/devstack.git

我稍微修改了local.conf文件,修改后的版本在 这里 。接下来是进行堆叠。
cd devstack;./stack.sh

4. 安装Nova-Docker rootwrap过滤器

wiki里面提到的步骤可以出色的工作。
sudo cp nova-docker/etc/nova/rootwrap.d/docker.filters \
/etc/nova/rootwrap.d/

5. 应用Kilo解决方案

堆叠抛出了下面错误:
2015-06-03 22:28:57.870 ERROR nova.openstack.common.threadgroup [req-f89bc2cd-5fcc-42e4-a588-ef92ab101fb3 None None] 'module' object has no attribute 'DOCKER'
n-cpu.log.2015-06-03-222501:2015-06-03 22:28:57.870 TRACE nova.openstack.common.threadgroup AttributeError: 'module' object has no attribute 'DOCKER'

在OpenStack的 邮件列表 讨论过这个问题,解决方法是编辑Docker驱动文件。在我的案例中,文件位于“/usr/local/lib/python2.7/dist-packages/novadocker/virt/docker“。

6. 创建Docker镜像,并将其暴露给Glance

我首先使用 “docker pull nginx" 命令,从Docker Hub抓取Nginx容器
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
nginx               latest              a785ba7493fd        2 weeks ago         132.9 MB

接下来将镜像保存到Glance。
docker save nginx |  glance image-create --is-public=True --container-format=docker --disk-format=raw --name nginx

现在,查看Glance镜像列表,我们可以看见Docker镜像已经和其他实例镜像在一起了,并且Nginx的类型是Docker。

7. 由Nova催生Docker容器

我们使用Glance里面的镜像,创建nginx容器。Flavor事实上不是那么重要。
nova boot --flavor m1.small --image nginx nginxtest

查看主机里面正在运行的Docker容器。
$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
4f514bc59a41        nginx:latest        "nginx -g 'daemon of   12 seconds ago      Up 11 seconds                           nova-931335f8-ac5c-4c28-967b-25b9474ab2de   

列出Nova实例:
$ nova list
+--------------------------------------+-----------+--------+------------+-------------+------------------+
| ID                                   | Name      | Status | Task State | Power State | Networks         |
+--------------------------------------+-----------+--------+------------+-------------+------------------+
| 931335f8-ac5c-4c28-967b-25b9474ab2de | nginxtest | ACTIVE | -          | Running     | private=10.0.0.5 |
+--------------------------------------+-----------+--------+------------+-------------+------------------+

检查nginx是否正常工作:
$ curl 10.0.0.5Welcome to nginx!
|
|

谢谢使用nginx。

参考


备注: 文章中使用的图片来自参考列表中的文章。

原文链接:OpenStack with Docker-part 1(翻译:洪国安 审校:李颖杰)

============================================
译者介绍
洪国安,编程爱好者,目前是一名大三学生,希望通过帮社区翻译,提高自己的知识面。

原文发布时间为:2015-06-29
本文作者:Arthur
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:使用OpenStack管理Docker容器(一)
目录
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
3天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
4天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
5天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
7天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
7天前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。
|
网络协议 Linux 网络安全
openstack 云平台一体化部署(超详细)
openstack 云平台一体化部署(超详细)
1268 0
openstack 云平台一体化部署(超详细)
|
3月前
|
消息中间件 缓存 Shell
跟我一起来学OpenStack部署
跟我一起来学OpenStack部署
277 0