Mac上用Docker搭建自己的lamp环境

docker基本命令

docker run -d -p 80:80--name webserver nginx 运行容器并起别名

docker ps 展示目前启动的容器

docker ps -a 展示所有容器

dockerstart启动容器

dockerstop停止容器

docker rm -fwebservr 停止并删除容器,但不会删除镜像

docker images 显示本地拥有的镜像

docker rmi nginx 删除本地images

创建自己的docker镜像

编辑Dockerfile文件,填入以下内容:

FROMdocker/whalesay:latest

RUN apt-get-y update && apt-getinstall -y fortunes

CMD /usr/games/fortune -a | cowsay

运行以下命令创建名为docker-whale的镜像:

dockerbuild -t docker-whale .

-t: 给tag命令

.: Dockerfile文件所在路径

docker tag push pull

docker tag8e15421920b1 xulingfeng/docker-whale:latest

上传操作

dockerpushxulingfeng/docker-whale

下载操作

dockerpull centos

交互式的操作

docker run -t -i ubuntu/bin/bash

-t 分配了一个终端在新的容器中

-i 允许你和容器进行交互操作

/bin/bash 启动容器中的Bash shell

docker的守护状态,也就是后台运行

docker run -d ubuntu /bin/sh -c"while true; do echo hello world; sleep 1; done"

docker run 运行容器

-d 让容器在后台运行

ubuntu 你希望运行容器的镜像

查看docker容器运行日志

docker logs-f容器名

-f 类似与 tail -f

使用docker运行web应用

docker run-d-P training/webapp python app.py

-d:代表后台运行该容器

-P:映射容器中的web应用端口号到你的主机上32768-61000中的某一个端口。这样你可以访问该容器中的web应用

training/webapp: 一个已经构建好的镜像,包含一个简单的python flask框架web应用

python app.py:这个命令用来启动容器中的web

成功运行以上命令后,运行:

docker ps

查看到容器的5000端口号映射到了本地的32768,浏览器访问http://127.0.0.1:32768 看到helloworld 成功提示

自定义主机端口号

docker run-d-p 80:5000 training/webapp python app.py

-p 80:5000 将本机的80端口绑定容器内的5000端口,本地直接访问http://127.0.0.1即可

查看容器的进程

dockertop 容器名

检查容器的状态信息

dockerinspect 容器名

镜像搜索

dockersearch 内容

创建一个给pycharm开发用的镜像,包含python3,Django, Flask, requests, PyMySQL, ldap3, jira,celery, simplejson

centos镜像,分解步骤如下

首先添加额外源

yuminstall-y epel-release

安装编译环境

yuminstall-y gcc automake autoconf libtool make gcc-c++

安装wget命令

yuminstall-y wget

安装openssl-devel python的pip命令依赖

yuminstall-y openssl-devel

下载python3.5.2最新包

wgethttps://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz -P /software/

解压python3.5.2压缩包并编译安装

tar -zxvf /software/Python-3.5.2.tgz -C /software/

./configure &&make-j2&&makeinstall -j2

更新pip

pipinstall--upgrade pip

pipinstall--upgrade setuptools

安装所需的第三方包

pipinstallDjango Flask requests PyMySQL ldap3 jira celery simplejson

通过Dockerfile构建镜像

Dockerfile:

FROM centos:latest

RUN yuminstall-y epel-release

RUN yuminstall-y gcc automake autoconf libtool make gcc-c++

RUN yuminstall-y wget

RUN yuminstall-y openssl-devel

RUN wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz -P/software/

RUN tar -zxvf /software/Python-3.5.2.tgz -C/software/

RUN cd /software/Python-3.5.2/ && ./configure python3 && make -j2&& makeinstall-j2

RUN pipinstall--upgrade pip

RUN pipinstall--upgrade setuptools

RUN pipinstallDjango Flask requests PyMySQL ldap3 jira celery simplejson

在Dockerfile目录中执行:

dockerbuild -t 名字:版本 .

兼容docker for mac 和 pycharm

brewinstallsocat

socat TCP-LISTEN:2376,reuseaddr,fork,bind=127.0.0.1UNIX-CLIENT:/var/run/docker.sock





1.先在Mac上下载docker:官网下载:下载地址(选择mac版本下载,可能速度较慢)

                                    DaoCloud下载:下载地址(速度较快,可能版本较低)

2.装完之后打开:


3.检查一下是否下载成功:

[plain]view plain copy


$ docker --version  

Docker version 1.13.0-rc3, build 4d92237  

$ docker-compose --version  

docker-compose version 1.9.0, build 2585387  

$ docker-machine --version  

docker-machine version 0.9.0-rc2, build 7b19591  

如果在终端里面输入docker提示的是command not found请将docker加入到环境变量:

[plain]view plain copy


vim /etc/profile  

最后插入 export PATH=${PATH}:/usr/local/bin ## docker命令安装到了这个目录  

可以运行一个hello-world镜像来测试一下:


如果本地不存在这个镜像,则会从远程镜像库中拉取

运行成功会出现:


搭环境之前先介绍一些docker基础命令:

docker images  查看已下载的镜像 

docker ps  查看正在运行的容器

docker ps -a 查看所有容器

docker stop 容器id 停止正在运行的容器

docker rm 容器id 删除容器

docker rmi 镜像id 删除images

docker容器和镜像的理解可以参考:docker镜像与容器

4.搭建lamp本地开发环境

安装Ubuntu:

    可以先查找hub.docker.com里可供下载的Ubuntu版本:

[plain]view plain copy


docker search Ubuntu  

或者直接下载:

[plain]view plain copy


docker pull ubuntu # 这样安装的Ubuntu版本是16.04的  

docker pull www.mcyllpt.com ubuntu:14.04 # ubuntu 14.04 版本  

进入Ubuntu安装一些必要的软件:

[plain]view plain copy


docker run  -t -i /bin/bash # -i 同步输入 -t 同步输出 -d 持续运行  

然后就进入到了熟悉的Ubuntu  

安装 vim www.qianjin178.com apache2 mysql php5 redis  

apt-get update   

apt-get www.boshenyl.cn install vim  

apt-get install apache2  

apt-get install mysql-server  

apt-get install php5 libapache2-mod-php5 php5-gd php5-mysql  

apt-get install redis-server php5-redis  

安装完成之后 exit 退出当前容器

使用docker ps -a查看当前配置完的容器,进行保存到images

[plain]view plain copy


docker commit --author “zhizhi(作者名字)” --message --"lampInit(容器说明)" id lamp:v1    

这边的id指的是容器id,可以在docker ps -a查看到

再输入docker images,可以看到images里面多了个lamp的镜像

运行镜像并映射本地文件夹到容器文件夹

[plain]view plain copy


docker run -itd -p 8989:80 -v www.wanmeiyuele.cn /Users/wwwroot:/var/www/html id /bin/bash  

-p 将本地的8989端口映射到容器的80端口

-v 将本地的 文件夹映射到服务器Apache默认的网站目录下

id 镜像id

这边冒号左边的路径指的是本地的文件夹目录,必须用绝对路径,冒号右边的路径是容器的网站根目录

进入容器开启apache2服务:

[html]view plain copy


docker exec -it 容器id /bin/bash  

service apache2 start  

如果这边出现

在容器中键入命令修改apache配置文件:

vim /etc/apache2/apache2.conf 

在配置文件尾部插入:

ServerName 172.17.0.2

保存重新开启apache服务

在本地的映射目录新建一个php文件进行测试:

打开浏览器访问:localhost:8989/test.php  进行测试

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • 安装好了的样子 这个时候就可以到终端里面输入docker命令 如果在终端里面输入docker提示的是command...
    jiangadam阅读 3,364评论 1 17
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,523评论 15 147
  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,364评论 1 39
  • 我们曾经爱过 用尽洪荒之力 但结果是走散了 而且再也无法遇见 我们只能假装我们是陌生人 比陌生人还陌生 我把最坏的...
    DreamL阅读 79评论 0 0
  • 1、 对于电影票电商平台来说,要做好线上发行主要有3个核心要素:首先是平台方需要具备至少亿级的用户池,这些用户会成...
    jlnbda3488375阅读 263评论 0 0