Docker_notes_practice

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

7. 云服务

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页