专栏首页一名白帽的成长史【Linux】使用docker搭建Apache/Nginx服务器

【Linux】使用docker搭建Apache/Nginx服务器

Hello,各位小伙伴大家好~

考官虐我千万遍,我待考官如初恋。吓得我赶紧写下这篇文章压压惊。

今天我们一起来通过实验掌握docker的基本用法吧~

Part.1

什么是docker?

Docker概述

Docker是一个开源的容器平台,使用容器镜像,可以轻松的创建虚拟化环境。

Docker的容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。

Docker跟我们常用的VMware功能很像,都是通过镜像来创建虚拟化环境。

Docker和VMware各有优势,对于我们安全从业人员而言,相较于VMware,docker创建虚拟化环境的速度更快,在Linux命令行界面下操作更加简便,可轻松地将虚拟化环境打包成镜像,也可通过镜像批量化生成多个虚拟环境。

我们直接从下面两个实验,来掌握docker的使用方法吧~

Part.2

搭建Apache服务器

Apahce2

我们的实验环境为Centos7,使用Centos7搭建Ubuntu虚拟环境,在Ubuntu中安装Apache服务。

按以下实验步骤,一步一步敲下去吧~

1、Centos7 安装 docker

  • yum update #更新软件源
  • yum upgrade #更新软件
  • yum -y install docker-io #安装docker
  • service docker start #启动docker服务

2、测试docker功能

docker run hello-world

Docker自带一个hello-world环境,我们可以启动这个环境,测试docker功能是否正常。

3、拉取Ubuntu镜像

首先我们需要先下载一个Ubuntu镜像。

搜索Ubuntu,可以找到不同类型的镜像:

拉取18.04版本的Ubuntu镜像到本地:

通过docker images查看下载的镜像:

//可以看到镜像仅仅只要64.2MB,非常轻量化

4、创建虚拟环境

首先查看我们使用的镜像的ID:

根据镜像ID创建Ubuntu虚拟化环境:

docker run -it [image] /bin/bash

  • -i 以交互模式运行容器,通常与 -t 同时使用;
  • -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -d 后台运行容器,并返回容器ID;
  • -p 随机端口映射,容器内部端口随机映射到主机的高端口;

//如果不使用-d参数,会直接进入容器。

//Apache服务默认为80端口,使用-p参数将80端口映射到Centos的8080端口,我们访问Centos的8080端口就相当于访问虚拟机的80端口了。

5、进入容器

首先我们ps查看一下后台运行的容器:

//可以看到容器ID为b978ca5d49de,映射端口为8080:80

使用容器ID进入容器:

docker exec -it [CONTAINER ID] bash

//命令符显示已进入容器,权限为root

这样我们的虚拟机就搭建好啦,接下来在虚拟机中安装Apache~

6、Apache2+php7环境搭建步骤:

  • apt-get update (更新软件列表)
  • apt-get install apache2(安装apache2)
  • apt-get install php7.0(安装php7)
  • apt-get install libapache2-mod-php(将php与apache关联)
  • service apache2 start(启动apache2服务)

安装完成后,测试以下功能是否正常。

访问Centos的8080端口,通过地址转换到Ubuntu的80端口,打开首页,Apache服务正常:

在/var/www/html/ 目录创建test.php文件,文件内容如下:

访问该文件,测试php功能正常:

这样我们就通过docker搭建了一个简单的Apache环境了~

7、其他操作

exit命令返回Centos,虚拟机依然在后台运行:

docker ps 查看后台运行的虚拟机:

//通过前面的exec命令,可再次进入容器

stop 命令停止容器:

docker ps -a 命令可以查看所有容器:

start 命令启动容器:

rm 删除容器:

//注意:删除一个容器,需要先stop这个容器

Part.3

搭建Nginx服务器

Nginx

Ubuntu14.04.5+Nginx+php 环境

步骤与搭建Apache环境类似,这里就不再详细描述了,配置如下:

docker pull ubuntu:14.04.5(下载14.04.5版本ubuntu镜像)

docker run -d -it -p 本机端口:80 ubuntu:14.04.5 (启动镜像)

apt-get update (更新源)

apt-get install nginx (安装nginx)

service nginx start (启动nginx服务)

apt-get install php5-fpm (安装php5-fpm)

service php5-fpm start(启动php服务)

访问Centos 8082端口,Nginx安装成功:

在根目录/usr/share/nginx/html/ 中创建test.php 文件:

刚装好的Nginx是不可以解析php文件的,需要修改default文件。

修改/etc/nginx/sites-available/default 文件:

重启Nginx服务:

访问test.php,php功能正常安装:

这样我们就完成了Nginx环境的简单搭建~

Part.4

生成镜像

生成镜像

四、生成镜像

当我们使用镜像生成容器后,对容器进行的操作并不会影响镜像,因此我们可以随时用一个镜像生成多个“干净”的虚拟容器。

如果需要保存容器的配置,需要让容器反向生成镜像。(先stop掉,再封装)

以我们刚配置的Nginx环境为例,查看后台容器:

先stop掉容器:

通过容器生成镜像:

参数说明:

查看生成的镜像:

使用这个镜像,我们就可以直接生成多个Nginx环境了~

Part.5

Docker配置汇总

配置汇总

0、启动docker  service docker start

1、下载镜像:  docker pull ubuntu:18.04

2、查看下载的镜像:docker images

3、查找镜像:    docker search ubuntu

4、构建容器:   

docker run -it -d -p port:port [image] /bin/nash

5、启动容器:    docker start [容器id]

6、停止容器:    docker stop [容器id]

7、删除容器:    docker rm [容器id]

8、查看运行容器:  docker ps -a

9、进入容器:docker exec -it 775c7c9ee1e1 bash

Part.6

结语

好啦,这就是今天的全部内容了,大家都明白了吗?

Peace!

本文分享自微信公众号 - 一名白帽的成长史(monster-liuzhi),作者:Monster刘智

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【漏洞复现】BeEF与CVE-2018-4878漏洞利用

    攻击者可以构造特殊的Flash链接,一旦用户用浏览器等方式访问此Flash链接,就会被“远程代码执行”,直接被getshell。

    一名白帽的成长史
  • 【漏洞复现】Tomcat文件包含漏洞的搭建与复现:CVE-2020-1938

    2月14日,Apache Tomcat官方发布了一个安全更新版本,用于修复Tomcat中存在的一个利用AJP协议的漏洞。利用该漏洞,攻击者可以通过发送恶意的AJ...

    一名白帽的成长史
  • 【工具篇】NETCAT-网络中的瑞士军刀

    NETCAT被人们称为网络工具中的瑞士军刀,体积小但功能强大。它能通过TCP和UDP在网络中读写数据,在两台电脑之间建立链接并返回两个数据流。

    一名白帽的成长史
  • 【技术分享】docker基础

    我们在写代码的过程中,或多或少都会遇到这样的问题:写了代码,在别人电脑上运行不了,一检查,别人电脑缺环境。

    木又AI帮
  • Docker容器技术(指令篇)

    注:同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只...

    用户7386338
  • Docker的镜像与容器常见面试答疑及命令行操作

    要让Docker能够正常工作,需要的是容器和镜像,它们是Docker的地基。镜像是一个模板,是运行一个应用程序所需的文件。容器是由镜像创建的,用来执行隔离的应用...

    角落的白板报
  • 「docker实战篇」python的docker-docker镜像的创建使用docker commit命令(32)

    PS:到此第一次完成了镜像的定制。使用的命令就是docker commit,手动操作给旧的镜像添加了一个新的层形成了一个新的镜像,大家对镜像多层分组应该有了感觉...

    IT故事会
  • 「走进k8s」Docker 基本命令(二)

    PS:基本容器和镜像的常用命令都给老铁们说了,如果你会git或者linux命令比较熟悉docker并不复杂,原理还是很重要的。

    IT故事会
  • Docker入门-常用命令

    Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。

    小码农薛尧
  • Docker--容器和镜像的使用

    可以看到ports字段,显示的为Docker的5000对应了本地的1024端口,我们在浏览器输入:”本地服务器ip:1024 “,就可以看到web运行的结果。

    洋仔聊编程

扫码关注云+社区

领取腾讯云代金券