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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS PostgreSQL,高可用系列 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

1.2 centos 6.x 7.x

sudo yum update
curl -sSL https://get.docker.io/ | sudo sh

1.3 如果安装出现错误

1.3.1

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

安装apparmor软件即可

sudo apt-get install apparmor  

下面需要创建用户和所属用户组,根据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.

1.4 设置用户和组

给 docker 设置用户组和用户

sudo useradd -g docker docker
sudo usermod -aG docker docker

2.docker 启动

2.1 启动

2.1.1 旧启动方式

centos 6.x ,ubuntu 14.x

sudo service docker start

2.1.2 新的启动方式

centos 7.x ,ubuntu 15.x

sudo systemctl start docker

2.2 停止

#centos 7.x ,ubuntu 15.x
sudo systemctl stop docker
或
#centos 6.x ,ubuntu 14.x
sudo service docker stop

2.3 重启

#centos 7.x ,ubuntu 15.x
sudo systemctl restart docker
或
#centos 6.x ,ubuntu 14.x
sudo service docker restart

2.4 docker状态

#centos 7.x ,ubuntu 15.x
sudo systemctl status docker
或
#centos 6.x ,ubuntu 14.x
sudo service docker status

2.5 docker 版本

sudo docker -v

3 相关配置

配置文件增加参数

sudo vi /etc/default/docker 

在配置文件中添加或修改

DOCKER="/usr/bin/docker"

增加完成后,重启docker

sudo systemctl restart docker

4 镜像拉取

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

4.1 mysql

#来自 https://hub.docker.com/_/mysql/
sudo docker pull mysql:5.6

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

4.2 redis

#来自 https://hub.docker.com/_/redis/
sudo docker pull redis

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

4.3 ElasticSearch

#来自 https://hub.docker.com/_/elasticsearch/
sudo docker pull elasticsearch

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

4.4 nginx 和php

#来自 https://hub.docker.com/r/foxiswho/nginx-php
sudo docker pull foxiswho/nginx-php

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

4.5 memcached

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

#来自 https://hub.docker.com/_/memcached/
sudo docker pull memcached

4.x 镜像拉取相关问题

4.x.1 拉取不成功

重新执行拉取命令

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

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

5 镜像查看

sudo docker images

6 生成容器

6.1 mysql

sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6

–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

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

6.3 ElasticSearch

sudo docker run --name es -p 9200:9200 -p 9300:9300 -d elasticsearch:latest

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

–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

例如 本机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

7.2容器关闭

sudo docker stop 容器名称

sudo docker stop es

7.3 容器重启

sudo docker restart 容器名称

sudo docker restart es

7.4 容器状态

sudo docker status 容器名称
sudo docker status es

7.5 容器删除

sudo docker rm 容器名称

删除所有容器

docker rm $(docker ps -q -a)

7.6 进入容器内部

sudo docker exec -it lanmps /bin/bash

7.7 查看 正在运行的容器

sudo docker ps

7.8 查看 所有容器

sudo docker ps -a

8 docker 镜像命令

8.1 所有镜像

sudo docker images

8.2 删除镜像

sudo docker rmi lanmps

删除所有镜像

docker rmi $(docker images -q) 

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

9.2 导入 import

cat /home/export.tar | sudo docker import - lanmps:latest

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

10.2 加载

docker load < /home/save-lanmps.tar

11 访问项目站点

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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
目录
相关文章
|
28天前
|
缓存 NoSQL 关系型数据库
MySQL 与 Redis 如何保证双写一致性?
我是小假 期待与你的下一次相遇 ~
279 7
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
kde
|
1月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
538 7
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
278 5
|
4月前
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
523 9
|
5月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
172 1
|
6月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
906 16
|
弹性计算 小程序 安全
基于云服务器部署nginx开发环境(新同学搭建Web系统/博客网站)
大家好,今天为大讲解如何搭建自己的和通数据库服务环境,也是笔者踩坑一天所获,希望对大家有所帮助。 无论是搭建个人博客空间也好,小程序也罢,搭建环境必需的两点:云服务器、域名,下面一步步给搭建演示如果在一台和通数据库服务器上搭建小程序服务端环境。
1003 0
基于云服务器部署nginx开发环境(新同学搭建Web系统/博客网站)
|
弹性计算 小程序 安全
基于云服务器部署nginx开发环境(搭建Web系统/博客网站)
基于云服务器部署nginx开发环境(搭建Web系统/博客网站)
1241 0
基于云服务器部署nginx开发环境(搭建Web系统/博客网站)