linux 下 docker NGINX+PHP+MYSQL+REDIS+Elasticsearch 开发环境搭建

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 一步步跟我做,搭建属于自己的 docker 开发环境 作者:风来了.fox nginx 1.8.0 php 5.6.x1.docker 安装1.1 ubuntu 14.x 15.xsudo apt-get updatecurl -sSL https://get.docker.io/ | sudo sh1.2 centos 6.x 7.x

一步步跟我做,搭建属于自己的 docker 开发环境
作者:风来了.fox
nginx 1.8.0
php 5.6.x

1.docker 安装

1.1 ubuntu 14.x 15.x

sudo apt-get update
curl -sSL https://get.docker.io/ | sudo sh
AI 代码解读

1.2 centos 6.x 7.x

sudo yum update
curl -sSL https://get.docker.io/ | sudo sh
AI 代码解读

1.3 如果安装出现错误

1.3.1

FATA[0000] Error loading docker apparmor profile: fork/exec /sbin/apparmor_parser: no such file or directory () 
AI 代码解读

安装apparmor软件即可

sudo apt-get install apparmor  
AI 代码解读

下面需要创建用户和所属用户组,根据1.4 设置

Warning: The docker group is equivalent to the root user; For details on how this impacts security in your system, see Docker Daemon Attack Surface for details.
AI 代码解读

1.4 设置用户和组

给 docker 设置用户组和用户

sudo useradd -g docker docker
sudo usermod -aG docker docker
AI 代码解读

2.docker 启动

2.1 启动

2.1.1 旧启动方式

centos 6.x ,ubuntu 14.x

sudo service docker start
AI 代码解读

2.1.2 新的启动方式

centos 7.x ,ubuntu 15.x

sudo systemctl start docker
AI 代码解读

2.2 停止

#centos 7.x ,ubuntu 15.x
sudo systemctl stop docker
或
#centos 6.x ,ubuntu 14.x
sudo service docker stop
AI 代码解读

2.3 重启

#centos 7.x ,ubuntu 15.x
sudo systemctl restart docker
或
#centos 6.x ,ubuntu 14.x
sudo service docker restart
AI 代码解读

2.4 docker状态

#centos 7.x ,ubuntu 15.x
sudo systemctl status docker
或
#centos 6.x ,ubuntu 14.x
sudo service docker status
AI 代码解读

2.5 docker 版本

sudo docker -v
AI 代码解读

3 相关配置

配置文件增加参数

sudo vi /etc/default/docker 
AI 代码解读

在配置文件中添加或修改

DOCKER="/usr/bin/docker"
AI 代码解读

增加完成后,重启docker

sudo systemctl restart docker
AI 代码解读

4 镜像拉取

注意:
如果拉取时间过长,docker hub 会自动切断链接,它会报超时错误!
这个时候再重新执行拉取命令即可,他会接着上次拉取断的位置重新拉取的

4.1 mysql

#来自 https://hub.docker.com/_/mysql/
sudo docker pull mysql:5.6
AI 代码解读

拉取时间根据每人的网速有关
项目都是根据 mysql 5.6 版本的,所以这里选择5.6版本
mysql:5.6 表示 镜像名称:版本号

4.2 redis

#来自 https://hub.docker.com/_/redis/
sudo docker pull redis
AI 代码解读

redis 后面没有版本号时,默认拉取最新的一版 即 redis:latest

4.3 ElasticSearch

#来自 https://hub.docker.com/_/elasticsearch/
sudo docker pull elasticsearch
AI 代码解读

elasticsearch 后面没有版本号时,默认拉取最新的一版 即 elasticsearch:latest

4.4 nginx 和php

#来自 https://hub.docker.com/r/foxiswho/nginx-php
sudo docker pull foxiswho/nginx-php
AI 代码解读

lanmps 后面没有版本号时,默认拉取最新的一版 即 lanmps:latest
nginx 版本 1.8.0
php 版本 5.6.x

4.5 memcached

有同学可能会使用这个缓存,需要的拿去
我们目前项目没有使用它

#来自 https://hub.docker.com/_/memcached/
sudo docker pull memcached
AI 代码解读

4.x 镜像拉取相关问题

4.x.1 拉取不成功

重新执行拉取命令

4.x.2 哪种为拉取不成功

如下图:红色框内都是none 的表示拉取不成功,要重新执行拉取命令
这里写图片描述

5 镜像查看

sudo docker images
AI 代码解读

6 生成容器

6.1 mysql

sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
AI 代码解读

–name 容器名称

mysql 为自定义名称

-p:暴露端口,映射端口(可以映射多个端口) 外部端口:容器内部端口

-p 3306:3306 映射端口

-e:设置任意环境变量(容器内)

MYSQL_ROOT_PASSWORD=root 这里指 设置数据库密码为root

mysql:5.6 镜像名称:版本

6.2 redis

sudo docker run --name redis -p 6379:6379 -d redis:latest
AI 代码解读

redis 为自定义名称
-p 6379:6379 映射端口, 即 外部端口:容器内端口
redis:latest 镜像名称:版本

6.3 ElasticSearch

sudo docker run --name es -p 9200:9200 -p 9300:9300 -d elasticsearch:latest
AI 代码解读

es 为自定义名称
-p 9200:9200 映射端口(可以映射多个端口), 即 外部端口:容器内端口
elasticsearch:latest 镜像名称:版本

6.4 Nginx+PHP

6.4.1 方式一 容器内链接

docker run --name lanmps --link mysql:db --link es:es --link redis:redis -p 80:80 -v /home/lanmps/www:/www/wwwroot -d foxiswho/nginx-php
AI 代码解读

–name 容器名称

–name lanmps 名为lanmps的容器

-p:暴露端口,映射端口(可以映射多个端口) 外部端口:容器内部端口

-p 80:80 外部80端口:容器内部80端口

-d:后台模式运行,如果没有则以前台运行(当前进程关闭后,当前容器自动关闭)

foxiswho/nginx-php 镜像名称:版本

–link:容器内部通信 容器名称:内部别名(内部使用)

–link mysql:db 使用时,直接使用db 就可以访问到数据库mysql容器
php 访问本地mysql 使用的是localhost,容器内部即可使用 db

-v:卷,外部目录虚拟到容器内目录 外部目录:容器内目录

-v /home/lanmps/www:/www/wwwroot
/home/lanmps/www 外部目录,我的项目目录
/www/wwwroot 容器内部目录,这个是不能改变的

注意
本地 目录设置权限和用户组
chown -R www:www /home/lanmps/www
chmod -R 777 /home/lanmps/www
这个时候访问本机 127.0.0.1:80 就可以看到 你的项目站点了

6.4.2 方式二 使用IP端口连接

**

注意
使用IP端口连接,必须是固定IP才可以
**

docker run --name lanmps -p 80:80 -v /home/lanmps/www:/www/wwwroot -d foxiswho/nginx-php
AI 代码解读

例如 本机ip 为 192.168.1.122
那么在链接 数据库3306 的时候,ip设置为192.168.1.122,端口号 3306

注意
本地 目录设置权限和用户组
chown -R www:www /home/lanmps/www
chmod -R 777 /home/lanmps/www
这个时候访问本机 127.0.0.1:80 就可以看到 你的项目站点了

7. 容器命令

普通情况下容器创建时,该容器就会是启动状态,如果关机了,那么就要启动该容器

7.1 容器启动

先启动没有任何链接的容器,最后启动 有关联的容器

sudo docker start 容器名称

sudo docker start redis
sudo docker start mysql
sudo docker start es
sudo docker start lanmps
AI 代码解读

7.2容器关闭

sudo docker stop 容器名称

sudo docker stop es
AI 代码解读

7.3 容器重启

sudo docker restart 容器名称

sudo docker restart es
AI 代码解读

7.4 容器状态

sudo docker status 容器名称
sudo docker status es
AI 代码解读

7.5 容器删除

sudo docker rm 容器名称
AI 代码解读

删除所有容器

docker rm $(docker ps -q -a)
AI 代码解读

7.6 进入容器内部

sudo docker exec -it lanmps /bin/bash
AI 代码解读

7.7 查看 正在运行的容器

sudo docker ps
AI 代码解读

7.8 查看 所有容器

sudo docker ps -a
AI 代码解读

8 docker 镜像命令

8.1 所有镜像

sudo docker images
AI 代码解读

8.2 删除镜像

sudo docker rmi lanmps
AI 代码解读

删除所有镜像

docker rmi $(docker images -q) 
AI 代码解读

9 docker 容器导入与导出

导出后再导入 的镜像会丢失所有的历史

9.1 导出 export

Export命令用于持久化容器(不是镜像)

#1.先查看 所有容器
sudo docker ps -a
#2.找到要导出容器 的 CONTAINER ID,然后执行命令
sudo docker export 容器CONTAINER ID > 导出地址文件名
即
sudo docker export 234wer2323dfdfdsfq > /home/export.tar
AI 代码解读

9.2 导入 import

cat /home/export.tar | sudo docker import - lanmps:latest
AI 代码解读

10 docker 镜像保存与加载

保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)

10.1 保存 save

Save命令用于持久化镜像(不是容器)

#1.先查看 所有镜像
sudo docker images
#2.找到要保存的镜像名称
sudo docker save 镜像名称 > 保存地址文件名
即
sudo docker save lanmps > /home/save-lanmps.tar
AI 代码解读

10.2 加载

docker load < /home/save-lanmps.tar
AI 代码解读

11 访问项目站点

因为lanmps 设置的端口为80,那么就可以直接 在浏览器上 输入 127.0.0.1,
就可以看到 你的项目站点了

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
打赏
0
0
0
0
14
分享
相关文章
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
273 90
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
316 2
Redis与MySQL的数据一致性
在高并发环境下,保持 Redis 和 MySQL 的数据一致性是一个复杂但重要的问题。通过采用读写穿透、写穿透、分布式锁、双写一致性保障和延时双删策略,可以有效地减少数据不一致的风险,确保系统的稳定性和可靠性。通过合理的缓存策略和数据同步机制,可以显著提升系统的性能和用户体验。
182 22
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
172 14
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
202 7
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
325 7
|
27天前
|
利用PHP压缩音频:Linux环境下的ffmpeg简易安装指南
希望这个指南能为你的编程之旅提供帮助。只需记住,每一行代码都像音乐的音符,组合在一起,创造出美妙的旋律。祝你编程愉快!
78 6

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等