首页 文章 精选 留言 我的

精选列表

搜索[硬件创客],共10002篇文章
优秀的个人博客,低调大师

Docker(四):Docker 三剑客之 Docker Compose

前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天给大家介绍 Docker 官方产品 Docker Compose 。 Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。 Docker Compose 介绍 Docker-Compose 是 Docker 的一种编排服务,是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。 通过 Docker-Compose 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。 Docker Compose 工作原理图 Compose 中有两个重要的概念: 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。 一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,通过子命令对项目中的一组容器进行便捷地生命周期管理。 Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。 Docker Compose 安装 Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose . 方法一: #下载 sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #安装 chmod +x /usr/local/bin/docker-compose #查看版本 docker-compose version 方法二: #安装pip yum -y install epel-release yum -y install python-pip #确认版本 pip --version #更新pip pip install --upgrade pip #安装docker-compose pip install docker-compose #查看版本 docker-compose version 推荐使用方法一进行安装,安装成功后输入docker-compose version会返回 docker-compose 的版本信息,如下: [root@localhost ~]# docker-compose version docker-compose version 1.19.0, build 9e633ef docker-py version: 2.7.0 CPython version: 2.7.13 OpenSSL version: OpenSSL 1.0.1t 3 May 2016 出现以上信息,表明 docker-compose 安装成功 安装补全工具(可选) 为了方便我们输入命令,也可以安装 Docker 的补全提示工具帮忙我们快速输入命令 #安装 yum install bash-completion #下载docker-compose脚本 curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose 快速上手 没有什么比来一个小例子练练手更好的学习方法了,我们以官网上的简单示例来看看 docker compose 的使用方法。 我们设计这么一个场景,使用 Python 启动一个 Web 服务,输出一个hello()方法,每次访问的时候在 Redis 缓存中进行计数,并且将统计的结果打印到页面中。 第一步,创建 Python 服务 创建项目路径: mkdir composetest cd composetest 在目录下创建app.py文件 import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times.\n'.format(count) if __name__ == "__main__": app.run(host="0.0.0.0", debug=True) 在这个例子中, redis 使用了容器内的网络默认端口是6379。这段 Python 程序的内容就是,启动后连接 Redis 并且输出 hello()方法,当每次访问的时候累计访问次数并且将结果放回到页面。 在同目录下创建requirements.txt文件,添加项目依赖的python包: flask redis Flask 是 Python 中一个微型的 Web 开发框架。 第二步,创建 Dockerfile 我们来写一个 Dockerfile 来定义 Docker 镜像,此镜像包含了 Python 的依赖包和 Python 环境。 同样在此目录下,我们创建一个 Dockerfile 文件。 FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"] 这段代码表示: 使用基础镜像 Python 3.4 将当前目录映射到镜像/code目录下 设置工作目录为 /code 安装 Python 依赖包 启动 app.py 程序 第三步,使用 Compose 文件定义一个服务 在当期目录下,我们创建一个 docker-compose.yml 文件,内容如下: version: '2' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" 这个 Compose 文件定义了两个服务, 一个 Pyhon Web 服务和 redis 服务。 Pyhon Web 服务:使用 Dockerfile 构建了当前镜像。将 Web 容器内部的5000端口映射到 host 的5000端口;并将 Web 容器与 redis 容器连接。 redis服务:该容器直接由官方的 redis 镜像创建。 第四步,使用 Compose 编译启动应用 使用命令docker-compose up启动 version: '2' services: web: build: . command: python app.py ports: - "5000:5000" volumes: - .:/code redis: image: "redis:alpine" 启动成功之后,在浏览器访问:http://ipaddress:5000/ ,返回如下: Hello World! I have been seen 1 times. 刷新再次访问返回 Hello World! I have been seen 2 times. 不断的刷新数字会不断的增长。 Docker Compose 常用命令 使用docker-compose up -d在后台启动服务 [root@localhost composetest]# docker-compose up -d Starting composetest_web_1 ... Starting composetest_web_1 ... done 使用docker-compose ps命令查看启动的服务 [root@localhost composetest]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------- composetest_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp composetest_web_1 python app.py Up 0.0.0.0:5000->5000/tcp 使用docker-compose stop停止服务。 [root@localhost composetest]# docker-compose stop Stopping composetest_web_1 ... done Stopping composetest_redis_1 ... done 其它常用命令 #查看帮助 docker-compose -h # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。 docker-compose -f docker-compose.yml up -d #启动所有容器,-d 将会在后台启动并运行所有的容器 docker-compose up -d #停用移除所有容器以及网络相关 docker-compose down #查看服务容器的输出 docker-compose logs #列出项目中目前的所有容器 docker-compose ps #构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务 docker-compose build #拉取服务依赖的镜像 docker-compose pull #重启项目中的服务 docker-compose restart #删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。 docker-compose rm #在指定服务上执行一个命令。 docker-compose run ubuntu ping docker.com #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量 docker-compose scale web=3 db=2 #启动已经存在的服务容器。 docker-compose start #停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。 docker-compose stop 参考 Get started with Docker Compose使用Docker-Compose编排容器 作者:纯洁的微笑 出处:www.ityouknow.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 本文如对您有帮助,还请多帮 【推荐】 下此文。 如果喜欢我的文章,请关注我的公众号

优秀的个人博客,低调大师

“开源 Windows” ReactOS 改进 UEFI 引导,支持更多硬件

ReactOS 开发团队宣布 64 位(AMD64 和 ARM64)UEFI 引导功能现在可以在更多设备上使用了。这些设备包括个人电脑、诺基亚的 Lumia、苹果的 iPhone 和 Valve 的 Steam Deck 等。 从今年年初开始,开发团队就着手将 ReactOS 的默认引导加载程序 FreeLoader 过渡到支持 x86 和 AMD64 以及 ARM32 和 ARM64 的 UEFI。ReactOS 核心开发者 Hermès 一直在开发一个用于传递 UEFI 帧缓冲区信息的系统,使 Windows XP 可以在 UEFI 系统上运行,而 Justin Miller (TheDarkFire) 则一直在开发 UEFI FreeLoader 构建。 除了支持引导 ReactOS 外,团队还在开发其他功能,如 EFI 连锁加载和 FreeLoader 的 bootmgfw 兼容构建。这些功能将增加引导管理功能,并允许现代 Windows 系统引导用户最喜欢的引导加载器。 除此之外,ReactOS 团队还表示正在慢慢改善 NT6+ 应用程序的兼容性和支持。NT6+ 是一个术语,包括基于较新 NT 架构设计的 Vista、7、8、8.1、10 和 11 等 Windows 操作系统。 由于许多软件开发商不再支持旧版本的 Windows 系统,因此日常使用的大多数应用程序都无法在 ReactOS 上运行。不过,这种情况将会改变。 目前,ReactOS 主要局限于用户模式,内核模式的升级计划稍后进行。目前还没有预计的发布时间。 ReactOS 项目的主要目标就是提供一个与 Windows 环境二进制兼容的操作系统。它能让你的 Windows 应用程序和驱动程序如同在 Windows 上一样运行。 此外,由于应用了 Windows 操作系统的外观特性,已经熟悉 Windows 用户界面的用户在使用 ReactOS 时将驾轻就熟。ReactOS 的终极目标是使你能够在感觉不到最终用户体验变化的前提下,使用 ReactOS 来替代 Windows。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册