目录
1. 操作系统
- busybox
- alpine
- ubuntu
- centos
2. Web服务
2.1 Apache
:'
FROM httpd:2.4
# mkdir public; vi ./public/index.html
COPY ./public /usr/local/apache2/htdocs
'
docker build -t apache2-image .
#############################################
2.2 Nginx
Nginx具有热部署、高并发、低内存、快速响应和可靠性高等特点。
docker run -d -p 80:80 -v index.html:/usr/share/nginx/html:ro --name myweb nginx
#############################################
:'
FROM nginx
COPY ./index.html /usr/share/nginx/html
'
docker build -t my-nginx .
docker run -d --name myweb my-nginx
#############################################
:'
FROM ubuntu
MAINTAINER lihua<lihua@docker.com>
# 安装配置
RUN apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.config &&\
chown -R www-data:www-date /var/lib/nginx
RUN echo "Asia/Shanghai" >> /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
# 添加用户脚本
ADD run.sh /run.sh
RUN chmod 755 /*sh
# 定义可以被挂载的目录:虚拟主机的挂载目录、证书目录、配置目录和日志目录
VOLUME ["/etc/nginx/sites-enabled","/etc/nginx/certs", \
"/etc/nginx/conf.d", "/var/log/nginx"]
# 定义工作目录
WORKDIR /etc/nginx
# 定义输出命令:"#!/bin/bash\n/usr/sbin/nginx"
CMD ["/run.sh"]
# 定义输出端口
EXPOSE 80
EXPOSE 443
'
docker build -t my-nginx:2 .
docker run -d --name myweb2 my-nginx:2
3.3 Tomcat & Jetty
Jakarta项目开发的一个Servlet容器,内含了一个http服务器,具有管理和控制平台的功能。
#############################################
Jetty是一个开源servlet容器,相比tomcat,结构更加合理,性能更优。
docker run -d jetty
3.4 LAMP
LAMP(Linux-Apache/nginx-MySQL-PHP/perl/python)是目前流行的web工具栈。相比Java/J2EE架构具有资源丰富、轻量和快速开发的特点。相比.NET架构,具有跨平台、高性能和价格低的优势。
docker run -it -p 80:80 linode/lamp /bin/bash
service apache2 start
service mysql start
#############################################
docker run -d -p 80:80 -p 3306:3306 tutum/lamp
:'
FROM tutum/lamp:latest
RUN rm -rf /app && git clone <git_address> /app
EXPOSE 80 3306
CMD ["/run.sh"]
'
docker build -t my-lamp .
docker run -d -p 80:80 -p 3306:3306 my-lamp
3.5 CI/CD
Jenkins是一个持续集成和持续交付工具。
docker run -p 8080:8080 -p 50000:50000 --name jk\
-v /yourhome:/var/jenkins_home jenkins
Gitlab是一款开源源码管理系统。支持基于Git的源码管理、代码评审、issue跟踪、活动管理、wiki页面、持续集成和测试等功能。
docker run -d --name gitlab \
--host-name gitlab.ex.com \
--publish 443:443 --publish 80:80 --publish 23:23 \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/etc/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
4. 数据库
4.1 MySQL
MySQL是开源的关系型数据库。具有成熟可靠、易用等特点。
# 快速启动
docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
mysql:latest
# 通过配置文件进行配置
docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-v /config:/etc/mysql/conf.d \
mysql:latest
# 通过标签进行配置
docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
mysql:latest \
--character-set-server=utf8mb4
4.2 MongoDB
MongoDB是NoSQL数据库。具有高性能、易部署、易使用等特点。
docker run -d --name md mongo
4.3 Cassandra
Cassandra是开源的分布式数据库。
docker run -d --name cs cassandra
5. 分布式处理
5.1 Hadoop
Hadoop是一个开源的分布式计算平台,由HDFS(分布式文件系统)、YARN(资源管理系统)和MapReduce(分布式处理管理)三个核心子系统组成。此外还包括HBae(列数据库),Cassandra(分布式数据库)等相关项目。
5.2 Spark
Spark是一个大数据处理框架。相较Hadoop和Storm,其支持更灵活的函数定义,可以将应用处理速度提升1-2个数量级,并提供了众多实用工具。
5.3 Storm
Storm是一个实时流计算框架。Storm集群和Hadoop集群类似,除了后者运行的是Mapduce任务,而前者运行的是topology。
6. 编程开发
6.1 C/C++
6.2 Java
6.3 Python