Docker 学习应用篇三:使用docker搭建的环境,安装thinksns

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 安装了。这个问题以后还是要解决的

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

基于Docker的PHP开发环境

【编者的话】本文作者是Geoffrey,他是一个PHP的Web开发者,喜欢DevOps和Docker。本文主要介绍了如何使用Docker构建PHP的开发环境,文...

3289
来自专栏jeremy的技术点滴

基于Docker for macOS的Kubernetes本地环境搭建与应用部署

2.1K5
来自专栏CRPER折腾记

Docker折腾记: (1)构建yapi容器,从构建发布到可用

Docker/Linux/Node基础, 比如Linux和docker的常用命令,shell的编写等等

3862
来自专栏编程坑太多

『中级篇』Docker 水平扩展和负载均衡(40)

PS:Docker的scale 可以扩展,也可以所有,他们自动来控制的。web=10 可以改成5 其中的6,7,8,9,10就被删除了。

5693
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Docker Swarm安装和保护OpenFaaS

无服务器架构从开发人员隐藏服务器实例,并且通常公开允许开发人员在云中运行其应用程序的API。这种方法可以帮助开发人员快速部署应用程序,因为他们可以将配置和维护实...

4591
来自专栏云计算教程系列

如何在Debian 9上安装Anaconda Python发行版

Anaconda是一个开源包管理器,环境管理器,以及Python和R编程语言的发行版。它专为数据科学和机器学习工作流程而设计,通常用于大规模数据处理,科学计算和...

7494
来自专栏LanceToBigData

linux命令详解之netstat

今天在使用linux的时候,要查看端口号,但是不知道要使用哪一个命令所以就学习了一下,原来是使用netstat,接下来给大家一起来学习。 一、netstat介绍...

32810
来自专栏编程坑太多

『中级篇』Docker 水平扩展和负载均衡(40)

PS:Docker的scale 可以扩展,也可以所有,他们自动来控制的。web=10 可以改成5 其中的6,7,8,9,10就被删除了。

1173
来自专栏纯洁的微笑

Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏

云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习...

3917
来自专栏编程坑太多

『高级篇』docker之微服务服务docker化(18)

1192

扫码关注云+社区

领取腾讯云代金券