docker深入1-尝试运行一个简单的web环境

目的:在基础镜像(pcnk/base:v2)上增加一个web环境:sync

做法:启动新的container,然后逐步增加web服务,再提交到image,这里用到了端口映射,数据卷挂载。

一、在【pcnk/base:v2】这个基础image上运行一个container【web】来安装sync所需的httpd等服务
1)container【web】
[[email protected] base]$ docker run -d -v /home/download:/home/download -v /home/datacenter:/data --name web -p 10032:22 pcnk/base:v2   
152d0ca20346fc4a0d0a5a8fe04671910dcc685801f572159ae3c7f5dd2ecf43
[[email protected] base]$ docker ps -l
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES
152d0ca20346        pcnk/base:v2        "/usr/bin/supervisor   7 seconds ago       Up 6 seconds        0.0.0.0:10032->22/tcp   web   

[[email protected] base]$ ssh -p 10032 [email protected]
[email protected]‘s password: 
Last login: Wed May  6 10:11:26 2015 from 172.17.42.1

2)调整时间:
[[email protected] /]# mv -f /etc/localtime /etc/localtime.old
[[email protected] /]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[[email protected] /]# echo ‘ZONE="Asia/Shanghai"‘ >/etc/sysconfig/clock

[[email protected] /]# cd /home/download/vriteam-sync-0.2.4
[[email protected] vriteam-sync-0.2.4]# yum -y install wget gcc perl autoconf automake make bzip2 tar zip && yum clean all
[[email protected] vriteam-sync-0.2.4]# ./install all

3)安装php模块:
[[email protected] vriteam-sync-0.2.4]# ./install ssh2
[[email protected] vriteam-sync-0.2.4]# ./install svn
[[email protected] vriteam-sync-0.2.4]# cd /etc/php.d
[[email protected] php.d]# cat ssh2.ini svn.ini 
; Enable ssh2 extension module
extension=ssh2.so
; Enable svn extension module
extension=svn.so
[[email protected] vriteam-sync-0.2.4]# ls /lib64/php/modules/
curl.so  fileinfo.so  json.so  mysqli.so  mysql.so  pdo_mysql.so  pdo.so  pdo_sqlite.so  phar.so  sqlite3.so  ssh2.so  svn.so  zip.so
[[email protected] conf.d]# yum clean all

4)调整httpd的配置:
[[email protected] supervisor.d]# ln -s /data/supervisor.d/httpd.ini .
[[email protected] supervisor.d]# ll
total 4
lrwxrwxrwx. 1 root root 28 May  6 02:46 httpd.ini -> /data/supervisor.d/httpd.ini
-rw-rw-r--. 1 root root 41 May  5 10:47 sshd.ini

[[email protected] supervisor.d]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# mv welcome.conf /tmp/
[[email protected] conf.d]# ln -s /data/httpd/conf.d/sync.conf .
[[email protected] conf.d]# ll
total 16
-rw-r--r--. 1 root root 2893 Mar 12 15:07 autoindex.conf
-rw-r--r--. 1 root root  691 Oct 31  2014 php.conf
-rw-r--r--. 1 root root  366 Mar 12 15:08 README
lrwxrwxrwx. 1 root root   28 May  6 02:47 sync.conf -> /data/httpd/conf.d/sync.conf
-rw-r--r--. 1 root root 1252 Mar 12 14:57 userdir.conf
[[email protected]6 conf.d]# cat sync.conf 
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName sync.ec.office
    DocumentRoot /data/sync/src
    DirectoryIndex index.html index.php   

    <Directory /data/sync/src>
        AllowOverride None
        Require all granted
    </Directory>

    ErrorLog /data/log/sync-error_log
    CustomLog /data/log/sync-access_log common
</VirtualHost>

二、提交成image:【pcnk/web:sync】
[[email protected] base]$ docker commit 152d0ca20346 pcnk/web:sync

三、在image【pcnk/web:sync】的基础上,创建新的container【app_sync】,映射80端口,启动httpd服务

1)container【app_sync】
[[email protected] base]$ docker run -d -v /home/download:/home/download -v /home/datacenter:/data --name app_sync -p 10042:22 -p 80:80 pcnk/web:sync
[[email protected] base]$ ssh -p 10042 [email protected]
The authenticity of host ‘[127.0.0.1]:10042 ([127.0.0.1]:10042)‘ can‘t be established.
RSA key fingerprint is 15:18:db:44:ed:03:ca:ac:15:a3:d0:ea:ac:01:7e:27.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[127.0.0.1]:10042‘ (RSA) to the list of known hosts.
[email protected]‘s password: 
Last login: Wed May  6 11:51:55 2015 from 172.17.42.1
[[email protected] ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 12:02 ?        00:00:00 /usr/bin/python /usr/bin/supervisord
root         9     1  0 12:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root        10     1  0 12:02 ?        00:00:00 /usr/sbin/sshd -D
apache      12     9  0 12:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      13     9  0 12:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      14     9  0 12:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      15     9  0 12:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      16     9  0 12:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root        17    10  0 12:03 ?        00:00:00 sshd: [email protected]/0
root        19    17  0 12:03 pts/0    00:00:00 -bash
root        36    19  0 12:03 pts/0    00:00:00 ps -ef

2)httpd服务的控制

[[email protected] ~]# supervisorctl status httpd 
httpd                            RUNNING   pid 9, uptime 0:00:48       

[[email protected] ~]# chmod 777 /data/sync/src/tmp/
[[email protected] ~]# chmod 777 /data/sync/src/data/
[[email protected] ~]# chmod 777 /data/sync/src/install/
[[email protected] ~]# chmod 777 /data/sync/src/db.cfg.php 

3)通过web访问,引导安装,db这个环节略过。

四、停止之前用的container,删掉image【pcnk/web:sync】,提交成一个新的image【website/sync】,然后通过这个来启动服务
1)image【website/sync】
[[email protected] base]$ docker stop app_sync
[[email protected] base]$ docker rm app_sync
[[email protected] base]$ dcoker rmi 
[[email protected] base]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
website/sync        latest              1bda5d872bf7        22 minutes ago      508 MB
pcnk/web            sync                b41b76b51e1a        4 hours ago         505.9 MB
pcnk/base           v2                  064aa35dfcef        6 hours ago         251.3 MB
centos              7                   fd44297e2ddb        2 weeks ago         215.7 MB
centos              centos7             fd44297e2ddb        2 weeks ago         215.7 MB
centos              latest              fd44297e2ddb        2 weeks ago         215.7 MB

[[email protected] base]$ docker rmi b41b76b51e1a
Untagged: pcnk/web:sync

[[email protected] base]$ docker commit -m "增加 httpd,php 服务,用于sync这个应用。" -a "pcnk" ea8daf7b62d4 website/sync

2)container【app_sync_web】
[[email protected] base]$ docker run -d -v /home/download:/home/download -v /home/datacenter:/data --name app_sync_web -p 40022:22 -p 80:80 website/sync
[[email protected] base]$ docker ps -l
CONTAINER ID        IMAGE                 COMMAND                CREATED             STATUS              PORTS                                       NAMES
2ab2a9866251        website/sync:latest   "/usr/bin/supervisor   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:40022->22/tcp   app_sync_web   

五、现在我们来看一下images之间的关联
[[email protected] ~]$ docker images --tree
Warning: ‘--tree‘ is deprecated, it will be removed soon. See usage.
└─6941bfcbbfca Virtual Size: 0 B
  └─41459f052977 Virtual Size: 215.7 MB
    └─fd44297e2ddb Virtual Size: 215.7 MB Tags: centos:centos7, centos:latest, centos:7
      └─751a85a0d00b Virtual Size: 215.7 MB
        └─19b009f08542 Virtual Size: 228.1 MB
          └─420cb9e73c70 Virtual Size: 251.3 MB
            └─e97f94a79de0 Virtual Size: 251.3 MB
              └─fde06c761bde Virtual Size: 251.3 MB
                └─dbfae1099999 Virtual Size: 251.3 MB
                  └─064aa35dfcef Virtual Size: 251.3 MB Tags: pcnk/base:v2
                    └─b41b76b51e1a Virtual Size: 505.9 MB
                      └─1bda5d872bf7 Virtual Size: 508 MB Tags: website/sync:latest
时间: 2024-10-06 12:50:17

docker深入1-尝试运行一个简单的web环境的相关文章

如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1

原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个iPhone/iPad开发者,能够自己写一个简单的web服务器将是很有用的. 例如,你可能希望在软件启动时显示一些来自服务器的更新,或者在服务器端保存一些用户数据.除了你的想象力,没有什么能限制你了. 在第一篇中,我们将会一步一步的建立一个web服务器,基于promo code system(促销码系

用 Eclipse 创建一个简单的web项目

Eclipse neon 汉化版 ; 1;右击新建 -->  选择 动态Web项目 2:  填写 项目名 项目位置 ; 选择 Dynamic web module version 和 tomcat version ; 点击完成 即可创建 项目; 2.1:项目名称; 2.2:项目位置; 2.3: Dynamic Web Module Version  和 Tomacat  Version  之间有版本上的匹配关系: 匹配关系如下图 3: 创建成功后的项目结构: 4: 在创建好项目结构之后 先查看一

SharePoint 创建一个简单的Web Part 部分

SharePoint 创建一个简单的Web Part 部分 标准Web零件有时会很强大,运行多个功能的能力. 本文介绍了如何使用Visual Studio 创建一个简单的Web部分. 1. 打开VS,点击文件----新建项目. 2. 选择空白SharePoint项目.命名SmallvilleWebPartProject,点击确定.选择部署为场解决方式. 3. 右击项目加入新项目. 4. 选择Web部件. 5. 命名CustomerInformation,点击加入. 6. 右击新的Web部件项目.

【Java学习笔记】如何写一个简单的Web Service

本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web Developers Java SE 6 Windows XP 2.基本环境搭建: 1)Java SE6 JDK的安装:下载Java SE6 JDK,双击,安装默认选项进行安装即可. 2)Eclipse的安装与配置: 安装时直接解压.     配置处有两点,Window>Preferences>Jav

使用 CodeIgniter 创建一个简单的 Web 站点

原文:使用 CodeIgniter 创建一个简单的 Web 站点 参考源自: http://www.ibm.com/developerworks/cn/web/wa-codeigniter/index.html 我的第一个 CodeIgniter 项目(除HelloWorld外),现整理记录下来. 相关环境: 系统:ubuntu-10.04.3 Apache:httpd-2.4.7 PHP:php-5.4.22 MySQL:mysql-5.6.16 CI:CodeIgniter-2.2.0 目标

CodeIgniter框架——创建一个简单的Web站点

目标 使用 CodeIgniter 创建一个简单的 Web 站点.该站点将有一个主页,显示一些宣传文本和一个表单,该表单将发布到数据库表中. 按照 CodeIgniter 的术语,可将这些需求转换为以下内容: 一个控制器,仅包含少数功能(可使用默认的 Welcome 控制器) 一个模型(以及一个数据库表),用于存储联系人信息 一个主视图,包含一些支持 NO1.创建数据库表和模型 从模型入手可帮助理解底层数据库表,之后再开始布设功能和 UI.如果对表将存储哪些内容认识不深,设计与表交互的表单将十分

自己模拟的一个简单的web服务器

首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器是如何工作的 servlet容器是一个复杂的系统.不过,一个servlet容器要为一个servlet的请求提供服务,基本上有三件事要做: 1,创建一个request对象并填充那些有可能被所引用的servlet使用的信息,如参数.头部. cookies.查询字符串. URI 等等.一个 request

IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 2.2项目部署 在工具栏点击 Project: 无需任何设置,选择默认编译目录(或自定义编译目录) Modules: 将Tomcat加入 Libraries:无需任何设置.这里描述了此项目的依赖. Facets: 无需任何设置.这里描述了此项目所适配的服务框架 Artifacts: 无需任何配置.

自己动手模拟开发一个简单的Web服务器

开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的Web服务器来体会一下. 一.请求-处理-响应模型 1.1 基本过程介绍 每一个HTTP请求都会经历三个步凑:请求-处理-响应:每当我们在浏览器中输入一个URL时都会被封装为一个HTTP请求报文发送到Web服务器,而Web服务器则接收并解析HTTP请求报文,然后针对请求进行处理(返回指定的HTML页面