docker在centos上的使用
用来定义和运行多个容器的工具,compose是官方开源项目,docker环境没有,需要另外安装三个步骤定义你的应用使用的dockerfile,使你的项目可以运行在任何地方在docker-compose.yml中定义一个服务,包含所有你的app,使他们能在一个独立的环境中运行运行docker-compose up,编排开始,整个应用运行。docker-compose.yml 类似这样services
Docker包括三个基本概念
镜像(Image)
容器(Container)
仓库(Repository)
镜像
一个特殊的文件系统
操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
Docker设计时,就充分利用Union FS的技术,将其设计为分层存储的架构。 镜像实际是由多层文件系统联合组成。
镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。
容器
镜像运行时的实体
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
按照Docker最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新run,数据却不会丢失。
仓库
集中存放镜像文件的地方
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。
这里补充一下Docker Registry公开服务和私有Docker Registry的概念:
Docker Registry公开服务是开放给用户使用、允许用户管理镜像的Registry服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
最常使用的Registry公开服务是官方的Docker Hub ,这也是默认的Registry,并拥有大量的高质量的官方镜像,网址为:hub.docker.com/ 。在国内访问Docker Hub可能会比较慢国内也有一些云服务商提供类似于Docker Hub的公开服务。
除了使用公开服务外,用户还可以在本地搭建私有Docker Registry 。Docker官方提供了Docker Registry镜像,可以直接使用做为私有Registry服务。开源的Docker Registry镜像只提供了Docker Registry API的服务端实现,足以支持Docker命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。
仓库里常用的镜像
1、nginx(9.5K STARS,10M+ PULL) Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务
2、alpine,(4.2K STARS,10M+ PULL) Alpine Linux是一个面向安全应用的轻量级Linux发行版。
3、busybox,(1.3K STARS,10M+ PULL) BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。
4、httpd,(2.0K STARS,10M+ PULL) httpd是Apache超文本传输协议(HTTP)服务器的主程序。
6、mongo,(4.9K STARS,10M+ PULL) MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
5、redis,(5.7K STARS,10M+ PULL) Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
7、ubuntu,(8.3K STARS,10M+ PULL) Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造的。
8、node6.1K STARS,10M+ PULL) Node.js® 是一个基于 Chrome V8 引擎 的JavaScript 运行时。
9、postgres,(5.4K STARS,10M+ PULL) PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。
10、mysql,(6.8K STARS,10M+ PULL) MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
11、memcached,(1.1K STARS,10M+ PULL) Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。
12、registry,(2.2K STARS,10M+ PULL) docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
13、hello-world,(642 STARS,10M+ PULL) docker-hellowold
14、golang,(2.1K STARS,10M+ PULL) Go语言是谷歌2009发布的第二款开源编程语言。
15、centos,(4.6K STARS,10M+ PULL) CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。
16、docker,(807 STARS,10M+ PULL) Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
17、php,(3.8K STARS,10M+ PULL) PHP是全宇宙最好的语言,使用$符咒可操控世间万物,相传曾有上古大能持此术在某相亲节目中瞬间消灭全场女嘉宾24盏灯,恐怖如斯!
18、mariadb,(2.2K STARS,10M+ PULL) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
19、consul,(718 STARS,10M+ PULL) Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。
20、haproxy,(1.0K STARS,10M+ PULL) HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
21、traefik,(504 STARS,10M+ PULL) Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。
22、rabbitmq,(2.1K STARS,10M+ PULL) RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。
23、wordpress,(2.5K STARS,10M+ PULL) WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。
24、python,(3.2K STARS,10M+ PULL) Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
25、elasticsearch,(3.0K STARS,10M+ PULL) ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
26、openjdk,(1.2K STARS,10M+ PULL) OpenJDK是JDK的开放原始码版本,以GPL协议的形式放出。
27、ruby,(1.5K STARS,10M+ PULL) Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。
28、influxdb,(547 STARS,10M+ PULL) InfluxDB 一个开源的时间序列数据库 InfluxDB是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及执行分析。
29、debian,(2.7K STARS,10M+ PULL) Debian GNU/Linux 是一个操作系统及自由软件的发行版,它是由一群自愿付出时间和精力的用户来维护并更新的。
30、logstash,(1.2K STARS,10M+ PULL) Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。
32、java,(1.8K STARS,10M+ PULL) Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。 Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。
33、nextcloud,(537 STARS,10M+ PULL) Nextcloud 是一个免费专业的私有云存储网盘「开源」项目,可以让你简单快速地在个人/公司电脑、服务器甚至是树莓派等设备上架设一套属于自己或团队专属的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。
31、tomcat,(2.0K STARS,10M+ PULL) Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
34、maven,(665 STARS,10M+ PULL) Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。
35、jenkins,(3.8K STARS,10M+ PULL) Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。
36、swarm,(896 STARS,10M+ PULL) Swarm是Docker公司在2014年12月初发布的一套用来管理Docker集群的较为简单的工具。
37、telegraf,(180 STARS,10M+ PULL) Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。
38、ghost,(824 STARS,10M+ PULL) Ghost 是基于 Node.js 构建的开源博客平台。Ghost 具有易用的书写界面和体验,博客内容默认采用 Markdown 语法书写。Ghost 的目标是取代臃肿的 Wordpress。
39、kibana,(1.2K STARS,10M+ PULL) Kibana是一个使用Apache开源协议,基于浏览器的Elasticsearch分析和搜索仪表板。
40、drupal,(557 STARS,10M+ PULL) rupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。
41、kong,(221 STARS,10M+ PULL) Kong是Mashape开源的高性能高可用API网关和API服务管理层。它基于OpenResty,进行API管理,并提供了插件实现API的AOP。
42、cassandra,(848 STARS,10M+ PULL) Cassandra 是一个来自 Apache 的分布式数据库,具有高度可扩展性,可用于管理大量的结构化数据。它提供了高可用性,没有单点故障。
43、vault,(335 STARS,10M+ PULL) vault是一个密码/证书集中式管理工具,通过HTTP-API对外提供统一的密码访问入口,并且提供权限控制以及详细的日志审计功能。
45、sonarqube,(902 STARS,10M+ PULL) SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误。
44、nats,(188 STARS,10M+ PULL) NATS是一个开源且高性能的消息系统,它常常被认为是"一个为云服务的中央神经系统".它每秒钟可以传送百万条消息,所以非常适合用来连接微服务和IOT设备。
46、fedora,(699 STARS,10M+ PULL) Fedora是一个 Linux发行版,是一款由全球社区爱好者构建的面向日常应用的快速、稳定、强大的操作系统。
47、neo4j,(536 STARS,10M+ PULL) Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。
48、gradle,(126 STARS,10M+ PULL) Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。
49、sentry,(494 STARS,10M+ PULL) Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建。
50、owncloud,(952 STARS,10M+ PULL) ownCloud是一个自行托管的开源文件同步和共享服务器。
51、jruby,(72 STARS,10M+ PULL) JRuby,一个采用纯Java实现的Ruby解释器,由JRuby团队开发。
52、perl,(219 STARS,10M+ PULL) Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。
53、solr,(574 STARS,10M+ PULL) Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。
54、rethinkdb,(475 STARS,10M+ PULL) RethinkDB最早是作为一个对SSD进行专门优化的MySQL存储引擎出现的,其特点在于对SSD的充分利用。而目前RethinkDB已经脱离MySQL成为一个独立的存储。
55、rocket.chat,(338 STARS,10M+ PULL) Rocket.Chat 是特性最丰富的 Slack 开源替代品之一。 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等
56、groovy,(51 STARS,10M+ PULL) Groovy是一种运行在JVM上的动态语言,它吸取了Python,Ruby和Smalltalk等语言的优点,在Java语言的基础之上增加了许多特色功能。
57、percona,(365 STARS,10M+ PULL) Percona Server为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。
58、amazonlinux,(440 STARS,10M+ PULL) Amazon Linux 是由 AWS 提供以在 Amazon EC2 上使用的 Linux 映像。
59、chronograf,(97 STARS,10M+ PULL) Chronograf是InfluxData的UI组件.
60、buildpack-deps,(393 STARS,10M+ PULL) buildpack-deps类似于Heroku’s stack images图像。它包含了许多诸如Ruby Gems,PyPI模块等所需的“开发头”包。
61、nats-streaming,(41 STARS,10M+ PULL) NATS Streaming是一个以NATS为驱动的数据流系统且它的源码也是由Golang语言编写的。
62、flink,(49 STARS,10M+ PULL) Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。
63、zookeeper,(459 STARS,10M+ PULL) ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
64、joomla,(198 STARS,10M+ PULL) Joomla!是一套全球知名的内容管理系统。Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统。
65、erlang,(208 STARS,10M+ PULL) Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。
66、couchdb,(223 STARS,10M+ PULL) CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术
67、jetty,(263 STARS,10M+ PULL) Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。
68、eclipse-mosquitto,(165 STARS,10M+ PULL) mosquitto 是MQTT协议标准的一种开源实现。
69、redmine,(626 STARS,10M+ PULL) Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。
70、pypy,(147 STARS,10M+ PULL) PyPy是用Python实现的Python解释器,pypy解释py文件可以跑得更快。
71、iojs,(127 STARS,10M+ PULL) io.js是nodejs的友好版的分支("friendly fork”)。它支持npm中所有的同样模块,且使用了v8最新版本的截取(v8是被node.js使用js解释器),且修复了很多的bug。
72、bash,(108 STARS,10M+ PULL) bash 是一个为GNU计划编写的Unix shell。
73、django,(725 STARS,10M+ PULL) Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。
74、mono,(306 STARS,10M+ PULL) Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源代码项目。该项目的目标是创建一系列匹配ECMA标准(Ecma-334和Ecma-335)的.NET工具,包括C#编译器和通用语言架构。
75、couchbase,(325 STARS,10M+ PULL) Couchbase 是一个具有高性能、可扩展性和可 用性强的数据库引擎。它可以让开发人员通过 NoSQL 的键值存储(二进制或者JSON)或者使用 N1QL 的形式对数据进行操作。
76、adminer,(142 STARS,10M+ PULL) Adminer(原phpMinAdmin)是用PHP编写的一个全功能的数据库管理工具。
77、piwik,(135 STARS,10M+ PULL) Piwik是一套基于Php+MySQL技术构建的开源网站访问统计系统。
78、crate,(106 STARS,10M+ PULL) crateDB底层用elasticsearch开发,多表搜索和子查询功能要比elasticsearch强大很多。
79、elixir,(282 STARS,5M+ PULL) Elixir 是一个基于 Erlang 虚拟机的函数式、面向并行的通用编程语言。
80、kapacitor,(88 STARS,5M+ PULL) Kapacitor 是一个开源框架,用来处理、监控和警告时间序列数据。
81、arangodb,(129 STARS,5M+ PULL) ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。
82、haxe,(13 STARS,5M+ PULL) haxe是一套类型翻译系统,将由haXe类型系统所描述的代码,翻译成目标语言的类型系统。
83、websphere-liberty,(200 STARS,5M+ PULL) WebSphere Liberty是一个快速、动态、易于使用的Java EE应用程序服务器。
84、tomee,(55 STARS,5M+ PULL) Apache TomEE(发音同“tommy”)是一个新的JavaEE服务器,由Apache软件基金会开发,它是从Tomcat而来,同时加入的JavaEE的特征:TomEE=Tomcat+java EE。
85、ubuntu-debootstra,(39 STARS,5M+ PULL) debootstrap是debian/ubuntu下的一个工具,用来构建一套基本的系统(根文件系统)。生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多,当然功能也没那么强大,因此,只能说是“基本的系统”。
86、opensuse,(242 STARS,5M+ PULL) SUSE是德国最著名的Linux发行版,在全世界范围也享有较高的声誉。
87、oraclelinux,(488 STARS,5M+ PULL) Oracle Linux是Linux发行版本之一,全称为Oracle Enterprise Linux,简称OEL,是Oracle公司在2006年初发布第一个版本,以对Oracle软件和硬件支持较好见长。
88、mongo-express,(288 STARS,5M+ PULL) MongoDB可视化图形界面。
89、orientdb,(93 STARS,5M+ PULL) OrientDB的主要特点是支持多模型对象,即它支持不同的模型,如文档,图形,键/值和真实对象。
90、gcc,(324 STARS,5M+ PULL) GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。
91、rails,(774 STARS,5M+ PULL) Ruby on Rails, 也称 Rails, 是一个使用 Ruby 语言写的开源 Web 开发框架。
92、ros,(184 STARS,5M+ PULL) ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。
93、xwiki,(73 STARS,5M+ PULL) XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。
94、ibmjava,(52 STARS,5M+ PULL) Eclipse OpenJ9是一种高性能,可扩展的Java虚拟机(JVM)实现。
95、rust,(96 STARS,5M+ PULL) Rust是Mozilla开发的注重安全、性能和并发性的编程语言。
96、odoo,(529 STARS,5M+ PULL) Odoo 是一个现代化的商业应用套件,使用 AGPL 许可证,并具有客户关系管理(CRM),人力资源,销售,采购,会计,制造,仓库管理,项目管理,以及众多社区模块。
97、clojure,(226 STARS,5M+ PULL) Clojure是一种运行在Java平台上的 Lisp 方言,Lisp是一种以表达性和功能强大著称的编程语言,但人们通常认为它不太适合应用于一般情况,而Clojure的出现彻底改变了这一现状。
98、neurodebian,(53 STARS,5M+ PULL) NeuroDebian为Debian操作系统以及Ubuntu和其他衍生产品提供了大量流行的神经科学研究软件。
99、swift,(198 STARS,5M+ PULL) Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
100、aerospike,(98 STARS,1M+ PULL) aerospike 是一个分布式的 kv 存储服务,与 redis,memcached 等相比,最大的特点是支持内存和磁盘的混合存储,并且对 ssd 的支持非常好,将索引存在内存中,数据存在 ssd 中,保持极高性能的同时,能有效的节约成本。
101、composer,(264 STARS,1M+ PULL) Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。C
102、irssi,(96 STARS,1M+ PULL) Irssi是Timo Sirainen用C语言写的一个文本用户界面的IRC客户端程序,她的发布遵循GPL(GNU General Public License)。
103、backdrop,(15 STARS,1M+ PULL) Backdrop CMS是开源的内容管理系统。
104、notary,(18 STARS,1M+ PULL) 为了提升Docker的安全性,Notary安全过滤器被引入到Docker中,保证互联网用户操作的规范性和安全性。
105、julia,(96 STARS,1M+ PULL) Julia是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia拥有丰富的函数库,提供了数字精度、精致的增幅器(sophisticated amplifier)和分布式并行运行方式。
106、znc,(34 STARS,1M+ PULL) ZNC是一个IRC代理,允许用户从工作站登录到IRC服务器。
107、r-base,(246 STARS,1M+ PULL) R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
108、php-zendserver,(151 STARS,1M+ PULL) Zend Server 是PHP创始公司Zend开发的PHP Web开发应用服务器。
109、matomo,(22 STARS,1M+ PULL) matomo的前身是piwik,是一个强大的网站流量分析网站。
110、nuxeo,(38 STARS,1M+ PULL) Nuxeo提供了一个可扩展的、模块化的企业内容管理平台,帮助架构师和开发人员轻松构建、运行商业应用。
111、celery,(221 STARS,1M+ PULL) CeleryCelery是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。
112、docker-dev,(80 STARS,1M+ PULL) ,此镜像包含Docker项目本身的构建和测试环境,从中可以发布正式版本。
113、storm,(78 STARS,1M+ PULL) Storm是Twitter开源的分布式实时大数据处理框架。最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop。
114、gazebo,(43 STARS,1M+ PULL) Gazebo是一个自主机器人3D仿真环境。它可以与ROS配套用于完整的机器人仿真,也可以单独使用。
115、plone,(19 STARS,1M+ PULL) Plone是免费的、开放源代码的内容管理系统(Content Management System,CMS)。
116、bonita,(68 STARS,1M+ PULL) Bonita BPM是一个开源业务流程管理和工作流程套件,由三个主要组件组成:Bonita Studio,Bonita BPM Engine和Bonita Portal。
117、mediawiki,(80 STARS,1M PULL) MediaWiki全球最著名的开源wiki程序,运行于PHP+MySQL环境。
118、geonetwork,(21 STARS,1M+ PULL) GeoNetwork opensource 是一个标准化的分布式空间信息管理平台,设计用于访问具有空间特征的数据库、地图产品以及相关各种来源的元数据,从而促进基于因特网的空间信息交换与共享。
119、cirros,(48 STARS,1M+ PULL) CirrOS是一款专注于在云上运行的小型操作系统。
120、haskell,(255 STARS,1M+ PULL) Haskell是一种标准化的、通用纯函数式编程语言,有非限定性语义和强静态类型。
121、rapidoid,(7 STARS,1M+ PULL) Rapidoid是一个类似vert.x的快速Java Web框架/微服务框架/RESTful框架,与SpringBoot竞争。
122、hylang,(23 STARS,1M+ PULL) Python 生态下的 Lisp 方言
123、teamspeak,(41 STARS,1M+ PULL) Teamspeak(简称TS)是一款团队语音通讯工具,但比一般的通讯工具具有更多的功能而且使用方便。
124、eggdrop,(21 STARS,1M+ PULL) Eggdrop是一款用C语言编写的开源IRC bot。
125、convertigo,(8 STARS,1M+ PULL) Convertigo是一个用于移动应用程序开发和后端的开源MBaaS/MADP平台。
126、fsharp,(34 STARS,1M+ PULL) F#(F sharp)是由微软发展的为.NET语言提供运行环境的程序设计语言,是一门函数式编程语言(FP,Functional programming),函数式编程语言最重要的基础是Lambda Calculus。
127、rakudo-star,(24 STARS,1M+ PULL) Rakudo Perl 6,或简称Rakudo,是Perl 6编程语言的编译器。
128、lightstreamer,(28 STARS,1M+ PULL) Lightstreamer是一种针对Internet优化的实时消息服务器。
129、swipl,(5 STARS,1M+ PULL) SWI-Prolog是Prolog语言的通用实现。
130、spiped,(17 STARS,1M+ PULL) Spiped是一个用于创建套接字地址之间的对称加密和认证管道的工具,以便连接到一个地址的源端(例如,在本地主机上一个UNIX套接字),可以透明地建立连接到另一个地址(例如,一个不同系统上的UNIX套接字)。
131、ubuntu-upstart,(88 STARS,1M+ PULL) upstart是能够对进程进行监控,当服务器重启或者进程异常时,能够对进程重新启动,保证服务的持续不间断。
132、hello-seattle,(2 STARS,1M+, PULL) 此镜像是专为DockerCon 2016创建的hello-world镜像变种。不鼓励使用它。
13、open-liberty,(5 STARS,500K+ PULL) Open Liberty是IBM发布的开源的Java微服务运行时,精简版的WAS服务器。
134、thrift,(91 STARS,500K+ PULL) Apache Thrift软件框架用于可扩展的跨语言服务开发,简单来说就是RPC远程调用,它是一个完整的 RPC 框架体系。
135、kaazing-gateway,(53 STARS,500K+PULL) Kaazing GateWay是一种提供跨平台跨浏览器WebSocket支持的网关,由Java编写。
136、photon,(55 STARS,500K+ PULL) Photon OS是一种极简的Linux操作系统,面向针对VMware平台优化的云原生应用程序。它使用采用多种格式(包括Docker、Rkt和Garden)的容器,运行分布式应用程序。
137、glassfish,(108 STARS,500K+ PULL) GlassFish是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。
138、mageia,(21 STARS,500K+ PULL) Mageia 是基于社区的 Linux 发行版,适用于桌面和服务器
139、hola-mundo,(2 STARS,500K+ PULL) 专为DockerCon EU 2015创建的hello-world镜像的变体,不鼓励使用它。
140、crux,(22 STARS,100K+ PULL) CRUX是一个针对i686优化过的轻量级Linux发行版,名字本身没有任何意思。
141、known,(8 STARS,100K+ PULL) 博客,满足社交,known是一个社交发布平台。
142、silverpeas,(7 STARS,100K+ PULL) Silverpeas是一个协作和社交网络门户,旨在促进和利用人员,团队和组织的协作,知识共享和反馈。
143、sourcemage,(9 STARS,100K+ PULL) Source IMage是一个基于GNU/Linux的发行版,具有最大的定制灵活性。
144、hipache,(70 STARS,100K+ PULL) Hipache是一个支持WebSocket的HTTP代理系统。
145、yourls,(3 STARS,100K+ PULL) 是一款开源的PHP程序,让你可以轻松建立属于自己的短网址生成系统。
146、clearlinux,(29 STARS,100K+ PULL) ClearLinux是专门针对英特尔架构而设计、基于Linux的操作系统。
147、scratch,(432 STARS,100K+ PULL) 大多数镜像最终都来源于scratch镜像,该镜像是一个空的镜像,主要用于制作其他镜像。
148、sl,(2 STARS,100K+ PULL) Scientific Linux(SL)的官方容器,Scientific Linux是重新编译的Red Hat Enterprise Linux,由费米国家加速器实验室、欧洲核研究组织以及世界各地的大学和实验室共同开发。
149、clefos,(2 STARS,100K+ PULL) ClefOS Linux是一个社区支持的IBM Z(mainframe)发行版,旨在与CentOS和RHEL功能兼容。
150、euleros,(8 STARS,100K+ PULL) 华为EulerOS提供增强的安全性,兼容性和易用性以及高可靠性。它满足了Linux OS在企业应用程序中不断增长的需求,并为用户提供了一个引人注目的开放式IT平台选择。
151、alt,(3 STARS,10K+ PULL) ALT Linux面向不同的目的生产不同类型的发行。这包括面向家庭、办公计算机、企业服务器的各种桌面发行,广泛包含各种开发工具和文档的通用发行,认证产 品,面向教育机构的专用发行,以及面向低端计算机的发行。
安装
官方文档
安装centos版本
https://docs.docker.com/engine/install/centos/
在 CentOS上安装docker引擎
先决条件
- CentOS 7 以上的版本
- centos-extras repository必需可用
In CentOS 7 and 8 this is an upstream repository, as well as additional CentOS packages. The CentOS development team have tested every item in this repository and they all work with CentOS. This repository is shipped with CentOS and is enabled by default. - 卸载老的docker版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
需要的安装包
安装yum源配置工具
sudo yum install -y yum-utils
设置镜像的仓库
国外镜像
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认来自国外,速度较慢
使用国内镜像地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新索引
我们在更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存
yum makecache fast
这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度
yum clean all
yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除缓存。
安装docker引擎相关
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker-ce是社区版,ee是企业版,官方推荐用ce
- 提示公钥没安装
解决办法
wget https://get.docker.com/gpg
--2020-07-24 07:34:36-- https://get.docker.com/gpg
Resolving get.docker.com (get.docker.com)... 52.84.166.98, 52.84.166.105, 52.84.166.59, ...
Connecting to get.docker.com (get.docker.com)|52.84.166.98|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 975 [binary/octet-stream]
Saving to: ‘gpg’
aliyun镜像加速
aliyun登录–>容器镜像服务->镜像加速器
执行以下命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1ql1ltd3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
启动docker
启动,查看状态
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2020-07-24 07:40:51 EDT; 11s ago
Docs: https://docs.docker.com
Main PID: 17215 (dockerd)
Tasks: 8
Memory: 38.1M
CGroup: /system.slice/docker.service
└─17215 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
查看版本
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 19.03.12
API version: 1.40
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:46:54 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:45:28 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
启动helloworld
docker hub在国外,有时被封,下载成功后如下
本地没有镜像,会到docker hub 拉取镜像
查看下载的镜像
卸载docker
- 卸载安装的包
yum remove docker-ce docker-ce-cli containerd.io
- 删除docker目录
rm -rf /var/lib/docker
常用命令
命令全貌
全景图
基本命令
Command | Description |
---|---|
docker attach | “Attach local standard input, output, and error streams to a running container” |
docker build | Build an image from a Dockerfile |
docker builder | Manage builds |
docker checkpoint | Manage checkpoints |
docker commit | Create a new image from a container’s changes |
docker config | Manage Docker configs |
docker container | Manage containers |
docker context | Manage contexts |
docker cp | Copy files/folders between a container and the local filesystem |
docker create | Create a new container |
docker diff | Inspect changes to files or directories on a container’s filesystem |
docker events | Get real time events from the server |
docker exec | Run a command in a running container |
docker export | Export a container’s filesystem as a tar archive |
docker history | Show the history of an image |
docker image | Manage images |
docker images | List images |
docker import | Import the contents from a tarball to create a filesystem image |
docker info | Display system-wide information |
docker inspect | Return low-level information on Docker objects |
docker kill | Kill one or more running containers |
docker load | Load an image from a tar archive or STDIN |
docker login | Log in to a Docker registry |
docker logout | Log out from a Docker registry |
docker logs | Fetch the logs of a container |
docker manifest | Manage Docker image manifests and manifest lists |
docker network | Manage networks |
docker node | Manage Swarm nodes |
docker pause | Pause all processes within one or more containers |
docker plugin | Manage plugins |
docker port | List port mappings or a specific mapping for the container |
docker ps | List containers |
docker pull | Pull an image or a repository from a registry |
docker push | Push an image or a repository to a registry |
docker rename | Rename a container |
docker restart | Restart one or more containers |
docker rm | Remove one or more containers |
docker rmi | Remove one or more images |
docker run | Run a command in a new container |
docker save | Save one or more images to a tar archive (streamed to STDOUT by default) |
docker search | Search the Docker Hub for images |
docker secret | Manage Docker secrets |
docker service | Manage services |
docker stack | Manage Docker stacks |
docker start | Start one or more stopped containers |
docker stats | Display a live stream of container(s) resource usage statistics |
docker stop | Stop one or more running containers |
docker swarm | Manage Swarm |
docker system | Manage Docker |
docker tag | Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE |
docker top | Display the running processes of a container |
docker trust | Manage trust on Docker images |
docker unpause | Unpause all processes within one or more containers |
docker update | Update configuration of one or more containers |
docker version | Show the Docker version information |
docker volume | Manage volumes |
docker wait | “Block until one or more containers stop, then print their exit codes” |
docker引擎命令
images命令
容器命令
使用docker
安装nginx
搜索应用
docker search nginx
下载镜像
docker pull ngnix
- 需要在docker hub注册一个账号
https://hub.docker.com/
- 重新执行pull命令
查看镜像
运行镜像
指定名字niinx01和映射的端口8800
docker run -d --name nginx01 -p 8800:80 nginx
- 查看
使用docker搭建nginx文件下载服务器
在宿主机配置nginx.conf文件
创建文件夹 /data/docker/nginx (作为挂载nginx需要的文件)
包含
1.nginx.conf 配置文件
2.download 目录作为存储下载源文件
nginx.conf文件的内容如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root ramdisk;
# alias /usr/share/nginx/html/download;
autoindex on; #开启索引功能
autoindex_exact_size off; #关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
autoindex_localtime on; #显示本机时间而非 GMT 时间
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
下载地址
wget http://[ip]:8082/文件
启动nginx的docker容器
docker run --name nginx -v /data/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /ramdisk/:/ramdisk -p 8082:80 -d nginx
参数说明:
–name:指定容器的名称,容器名称不能重复
-v:挂载数据卷,宿主机路径:容器路径
-p:指定映射端口,宿主机端口:容器端口
-d:指定容器后台运行
如果下载提示权限不够403错误,是download文件夹中的文件给的权限不够,直接给777.
wget http://[2408:3624:A200::7]:8082/view/7.exe
--2023-10-25 17:05:08-- http://[2408:8624:a100::7]:8082/view/7.exe
Connecting to [2408:3624:a200::7]:8082... 已连接。
已发出 HTTP 请求,正在等待回应... 403 Forbidden
2023-10-25 17:05:08 错误 403:Forbidden。
tomcat
docker run -it --rm tomcat:9.0
–rm 用完即删除的意思
提交镜像
类似git
docker commit #提交容器成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[tag]
容器数据卷
- 容器的持久化和同步操作,保证数据文件的安全,在容器被删除时,保留数据在本地。
- 容器间也可数据同步
docker run -it -v /home/ceshi:/home centos /bin/bash
操作上类似宿主机和容器之间的端口映射,就是把宿主机的/home/ceshi映射到容器中的/home目录,在容器中home目录发生的的变化,会同步到宿主机对应目录。
docker file
小结
docker 网络
compose
简介
用来定义和运行多个容器的工具,compose是官方开源项目,docker环境没有,需要另外安装
三个步骤
- 定义你的应用使用的dockerfile,使你的项目可以运行在任何地方
- 在docker-compose.yml中定义一个服务,包含所有你的app,使他们能在一个独立的环境中运行
- 运行docker-compose up,编排开始,整个应用运行。
docker-compose.yml 类似这样
version: '2.0'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
安装compose
下载
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
授权
chmod +x /usr/local/bin/docker-compose
建立软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
成功
swarm
文档位置
新机器的网络
swarm命令
生成管理节点
其他主机作为worker加入这个集群
docker swarm join --token SWMTKN-1-63aj96orfst4szd7xrikchplqbmy5uy0ayojevm8ad4zhfg002-29pxy29y26uzhmugco5x9949h 192.168.2.111:2377
报错
manager主机的防火墙未关闭
关闭后重新,执行join命令
管理节点查看
再加入一个worker节点
主机作为管理机加入集群,先生成token。
docker swarm join-token manager
docker swarm join --token SWMTKN-1-63aj96orfst4szd7xrikchplqbmy5uy0ayojevm8ad4zhfg002-a881hdjy2ksxep81hnft58ilk 192.168.2.111:2377
然后拿这个token命令,在第四台机上运行,同样要关闭防火墙
查看节点状态
raft协议:必需保证大多数节点存活,才可用;所以集群至少需要3台主节点,有两台存活时,是可用的,有一台就不行了。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)