Thinksns 是一个开源的社交网站,因为目前的项目需要用到这个,所以就下载一个安装试试看。

之前在windows上用了wamp,安装的很顺利。但是项目是要部署到linux上的。于是我便用了Docker

作为Docker的初学者,确实又是一个学习Docker的好机会。

安装thinksns,至少要apache或者nignx,然后数据库mysql,还有一个php的运行环境。自己又不会写DockerFile ,就在DockerHub上面拉了一个镜像,

在搭建环境,和以后使用环境的过程中,我们难免需要改一些配置,那么在Docker中如何修改容器中的配置呢 有两种方法:

1.在运行docker的容器的时候就把配置文件挂载下来,指令是:举例 -v /usr/data/mysite:/etc/apache2/ 这样的话,在本地的/usr/data/mysite文件夹下就可以修改apache2文件夹下的配置文件

2.使用可交互指令,这样我们就可以到docker容器中去修改配置文件了。
指令:docker run -i -t testcontainer -d testimages /bin/bash 然后我们就可以用docker attach 命令进入到docker容器中了

利用上面的docker镜像,用第二种方式生成一个docker容器:

docker run -i -t -p 8060:80 -v /User/chenyongkang/Documents/expower:/var/www/root/
-name thinksns -d athimel/apache2-php5-mysql bin/bash

当然,前提是你要docker pull athimel/apache2-php5-mysql 把这个镜像下载下来。

然后我们可以执行docker attach命令,进入到容器

docker容器其实也是一个linux系统,但是它和虚拟机的工作原理也不同。docker容器启动只要几百毫秒,而虚拟机启动要几分钟。那么docker和虚拟机工作原理的区别是什么呢?

首先从下网上看这个图:

Server  最底层:就是虚拟机和docker运行的机器,比如个人电脑,云服务器。
HostOS 最底层机器的操作系统,比如windows,Centos,MacOS 等等
接下来就不一样了,虚拟机用的是Hypervisor 虚拟机管理系统,运行每个虚拟机的GuestOS,
Guest OS即为虚拟机安装的操作系统,它是一个完整的操作系统内核。
而Docker守护进程(Docker Daemon)。Docker守护进程取代了Hypervisor,
是运行在操作系统之上的后台进程,负责管理Docker容器。
它利用的是目前Linux内核本身支持的容器实现资源和环境隔离。

然后我们就可以把Docker容器当作一个linux系统来操作,用apt-get 下载vim,

apt-get update : 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
然后 apt-get install vim

由于Docker需要安装php-curl 我想用最普遍的方法:使用phpize生成configure文件,然后make && make install最后在php.ini中添加加载模块的指令。可是我并找不到curl的扩展目录,ext/目录下没有curl文件夹,只好:

apt-cache search curl | grep php :搜索和当前php可用的curl扩展
发现可以先下载php5-curl
apt-get install php5-curl
如果下载失败,记得先apt-get update

然后解决了

下一步,填写完配置信息之后,出现

mysql根本无法启动,而且我也找不到/var/run/mysqld/文件夹,原来是这个镜像没有安装mysql,安装了php5-mysql 这是一个连接mysql和php的组件

里面并没有mysql,只能自己装了,或者重新写一个DockerFile。

安装了mysql之后,终于可以连接mysql了,

再往下走:

打开源码之后发现$_SESSION[]保存的信息在页面跳转之后会丢失,根据源码找到session文件保存的路径,发现里面有文件,但是居然是空的,按照网上的方法,修改php.ini 中session.use_trans_sid=1,

还是不起作用。

搞了半天也没安装成功,只好用lnmp 安装了。这个问题以后还是要解决的

Docker 学习应用篇三:使用docker搭建的环境,安装thinksns的更多相关文章

  1. Docker 学习应用篇之三: Docker的简单实用

    安装完Docker之后,我们就可以简单的使用Docker,来体会Docker的用处. 首先看下Docker的常用命令,都是我在实用Docker的时候用到的命令: docker常用命令: $ docke ...

  2. Docker学习系列(三)Docker搭建gitlab的两种方式

    一.直接下载docker-ce 1.拉取gitlab/gitlab-ce Randy:~ Randy$ docker pull gitlab/gitlab-ce Using default tag: ...

  3. 微服务分布式电商项目学习笔记(三)---- docker介绍安装以及使用docker安装软件(2020/7/10)

    其实在介绍docker的使用和安装之前应该还要介绍虚拟机的安装与配置,以及虚拟网络的配置,但是我使用的是vmware,而视频课使用的是vagrant,这一块我简看的,因此没有过多的介绍,至于vmwar ...

  4. Docker 学习应用篇之一: 初识Docker

    Docker 自从2013年以来就非常的火热,无论是从github上的代码活跃度,还是Redhat在RHE6.5中集成对Docker的支持,等等.第一次接触Docker,还是老师给我们介绍的. 1.初 ...

  5. Caffe学习系列(三)Docker安装及一些问题的记录

    前言: Docker安装倒是很简单,按照步骤轻松完成,但是在联网方面还是出现问题,大概是伟大的祖国防火墙将其拦下,但在开发中要遇山开山,见水搭桥.在其中我将解决方法记录下来,每次解决了困难想分享找不到 ...

  6. Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境

    本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分. 一.关于Jenkins Jenkins简介 ...

  7. docker+k8s基础篇三

    Docker+K8s基础篇(三) kubernetes上的资源 A:k8s上的常用资源 Pod的配置清单 A:Pod上的清单定义 B:Pod创建资源的方法 C:spec下其它字段的介绍 Pod的生命周 ...

  8. Docker 学习应用篇之二: Docker的介绍和安装

    之前说过Docker的好处,Docker可以集装箱化的部署应用程序.那么Docker是通过什么实现的呢.要理解Docker内部构建,需要先理解Docker的四种部件 1)images:镜像,docke ...

  9. Docker学习一篇就够了

    Docker 1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像 ...

随机推荐

  1. C++ 关键字——friend【转载】

    转载自: http://www.cnblogs.com/CBDoctor/archive/2012/02/04/2337733.html 友元是指: 采用类的机制后实现了数据的隐藏与封装,类的数据成员 ...

  2. 个人Android开发习惯[转载]

    以下内容转载自牛人博客,很多牛叉内容,请点击:http://www.stay4it.com/?p=281 Android三年,现在写代码,真心没什么很大的兴趣,每天都是优化代码,优化框架,技术支持.非 ...

  3. Java查看类的成员

    在一个类的内部,一般包括以下几类成员:成员变量.构造方法.普通方法和内部类等.使用反射机制可以在无法查看源代码的情况下查看类的成员.编写程序,使用反射机制查看ArrayList类中定义的成员变量.构造 ...

  4. Java虚拟机(一):JVM内存结构

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...

  5. iOS 解决UIScrollView布局问题(布局受statusBar和NavigationBar影响)

    iOS APP中有一个非常好用的功能,那就是当我们在滚动一个UIScrollView滚动了很远很远的时候,假如我们想让UIScrollView回到顶部,我们绝大多数人的做法就是慢慢慢慢的滚动UIScr ...

  6. zabbix添加对tomcat线程池的监控

    在zabbix模板中添加以下监控项: 可以参考文档:http://www.fblinux.com/?p=616

  7. 【代码审计】iCMS_v7.0.7 search.admincp.php页面存在SQL注入漏洞

      0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...

  8. Spring Web 应用的最大败笔

    开发人员在使用Spring应用是非常擅长谈论依赖注入的好处.不幸的是,他们不是那么真的利用它的好处,如单一职责原则,分离关注原则.如果我们一起来看看大部分Spring的Web应用程序,常见的错误的设计 ...

  9. 理解Java的反射与内省及其区别

    java的内省机制和反射机制什么区别 内省操作只针对JavaBean,只有符合JavaBean规则的类的成员才可以采用内省API进行操作....而反射则不同,一个类的所有成员都可以进行反射操作. 内省 ...

  10. 转:Android开发:使用DDMS Heap进行内存泄露调试

    无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方.Android tools中的DDMS就带有一个很不错的内存监测工具Heap,本 ...