Docker 安装 Nginx

方法一、docker pull nginx

查找 Docker Hub 上的 nginx 镜像

summer@ubuntu:~$  docker search nginx
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                     Official build of Nginx.                        3260      [OK]
jwilder/nginx-proxy       Automated Nginx reverse proxy for docker c...   674                  [OK]
richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   207                  [OK]
million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
maxexcloo/nginx-php       Docker framework container with Nginx and ...   57                   [OK]

这里我们拉取官方的镜像

$ docker pull nginx

等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像。

summer@ubuntu:~$ docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              555bbd91e13c        3 days ago          182.8 MB

nginx 部署

首先,创建目录 nginx, 用于存放后面的相关东西。

$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列:

docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
  • www: 目录将映射为 nginx 容器配置的虚拟目录。
  • logs: 目录将映射为 nginx 容器的日志目录。
  • conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

部署命令

$ docker run -d -p 80:80 --name wavefar-nginx -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx

命令说明:

  • -p 80:80: 将容器的 80 端口映射到主机的 80 端口。

  • -d:设置容器在在后台一直运行。

  • --name wavefar-nginx将容器命名为 wavefar-nginx。

  • ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

  • -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

  • -v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

启动以上命令后进入 ~/nginx/www 目录:

$ cd ~/nginx/www

创建 index.html 文件,内容如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>IT俱乐部(52it.club)</title>
</head>
<body><h1>我的第一个标题</h1><p>我的第一个段落。</p>
</body>
</html>

输出结果为:

相关命令

如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:

$ docker kill -s HUP wavefar-nginx

重启 NGINX 容器命令:

$ docker restart wavefar-nginx 

启动 NGINX 容器命令:

$ docker start wavefar-nginx 

停止 NGINX 容器命令:

$ docker stop wavefar-nginx 

Docker 安装 PHP

安装 PHP 镜像

docker pull php

查找Docker Hub上的php镜像

summer@ubuntu:~$ sudo docker search php
NAME                                                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
php                                                       While designed for web development, the PH...   4486      [OK]
phpmyadmin/phpmyadmin                                     A web interface for MySQL and MariaDB.          766                  [OK]
richarvey/nginx-php-fpm                                   Container running Nginx + PHP-FPM capable ...   712                  [OK]
adminer                                                   Database management in a single PHP file.       242       [OK]
php-zendserver                                            Zend Server - the integrated PHP applicati...   164       [OK]
webdevops/php-nginx                                       Nginx with PHP-FPM                              125                  [OK]
webdevops/php-apache-dev                                  PHP with Apache for Development (eg. with ...   102                  [OK]
webdevops/php-apache                                      Apache with PHP-FPM (based on webdevops/php)    85                   [OK]
phpunit/phpunit                                           PHPUnit is a programmer-oriented testing f...   71                   [OK]
bitnami/php-fpm                                           Bitnami PHP-FPM Docker Image                    69                   [OK]
nazarpc/phpmyadmin                                        phpMyAdmin as Docker container, based on o...   60                   [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          50                   [OK]
tetraweb/php                                              PHP 5.5, 5.6, 7.0, 7.1 for CI and running ...   32                   [OK]

这里我们拉取官方的镜像,标签为5.6-fpm

summer@ubuntu:~$ docker pull php:5.6-fpm

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为5.6-fpm的镜像。

summer@ubuntu:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 5.6-fpm             3458979c7744        3 months ago        344 MB

首先,创建目录php-fpm,用于存放后面的相关东西。

summer@ubuntu:~$ mkdir -p ~/php-fpm/logs ~/php-fpm/conf

logs目录将映射为php-fpm容器的日志目录

conf目录里的配置文件将映射为php-fpm容器的配置文件

使用php-fpm镜像

运行容器

summer@ubuntu:~$ sudo docker run -p 9000:9000 --name  wavefar-php-fpm -v ~/nginx/www:/www -v $PWD/conf:/usr/local/etc/php -v $PWD/logs:/phplogs   -d php:5.6-fpm
d6bb33b4d196336d7dff16d02369a212847a7e0a14779962ab5578cf1325fb38

命令说明:

  • -p 9000:9000 :将容器的9000端口映射到主机的9000端口

  • --name wavefar-php-fpm :将容器命名为myphp-fpm

  • -v ~/nginx/www:/www :将主机中项目的目录www挂载到容器的/www

  • -v $PWD/conf:/usr/local/etc/php :将主机中当前目录下的conf目录挂载到容器的/usr/local/etc/php

  • -v $PWD/logs:/phplogs :将主机中当前目录下的logs目录挂载到容器的/phplogs

查看容器启动情况

summer@ubuntu:~$ docker ps
CONTAINER ID    IMAGE         COMMAND      ...    PORTS                    NAMES
d6bb33b4d196    php:5.6-fpm   "php-fpm"    ...    0.0.0.0:9000->9000/tcp   wavefar-php-fpm

修改docker容器Nginx里的配置信息:

1、进入docker容器

sudo docker exec -it wavefar-nginx /bin/bash

2、由于默认docker容器里没有安装vim,所以需要安装vim

更新来源

root@caba367f2269:/# apt-get update

修改来源

root@caba367f2269:/# mv /etc/apt/sources.list /etc/apt/sources.list.bak && \

echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \

echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \

echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \

echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

安装vim

root@caba367f2269:/# apt-get install -y vim

PS:此处是通过nginx+php实现web服务,nginx配置文件的fastcgi_pass应该配置为wavefar-php-fpm容器的IP。

fastcgi_pass  172.17.0.3:9000;

容器IP的查方法

docker inspect 容器ID或容器名 |grep '"IPAddress"'

Docker 安装 MySQL

方法一、docker pull mysql

查找Docker Hub上的mysql镜像

summer@ubuntu:~$ docker search mysql
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                    MySQL is a widely used, open-source relati...   2529      [OK]
mysql/mysql-server       Optimized MySQL Server Docker images. Crea...   161                  [OK]
centurylink/mysql        Image containing mysql. Optimized to be li...   45                   [OK]
sameersbn/mysql                                                          36                   [OK]
google/mysql             MySQL server for Google Compute Engine          16                   [OK]
appcontainers/mysql      Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql         MySQL Server based on Ubuntu 14.04              6                    [OK]
drupaldocker/mysql       MySQL for Drupal                                2                    [OK]
azukiapp/mysql           Docker image to run MySQL by Azuki - http:...   2                    [OK]
...

这里我们拉取官方的镜像,标签为5.6

summer@ubuntu:~$ docker pull mysql:5.6

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.6的镜像。

summer@ubuntu:~$ docker images |grep mysql
mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB

首先,创建目录mysql,用于存放后面的相关东西。

summer@ubuntu:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf

data目录将映射为mysql容器配置的数据文件存放路径

logs目录将映射为mysql容器的日志目录

conf目录里的配置文件将映射为mysql容器的配置文件

创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像

summer@ubuntu:~$: docker images |grep mysql
mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB

使用mysql镜像

运行容器

summer@ubuntu:~$ docker run -p 3306:3306 --name wavefar-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e

命令说明:

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

  • -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

查看容器启动情况

summer@ubuntu:~$ docker ps
CONTAINER ID    IMAGE         COMMAND                  ...  PORTS                    NAMES
21cb89213c93    mysql:5.6    "docker-entrypoint.sh"    ...  0.0.0.0:3306->3306/tcp   wavefar-mysql

编写shell脚本,快速启动docker

建立一个目录专门存放docker启动脚本:

summer@ubuntu:~$ sudo mkdir start_docker

cd start_docker

1、添加MySQL快速启动脚本:

sudo vim start_docker_mysql.sh

添加以下内容并保存:

sudo docker run --name mysql -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=123456 -v /home/docker-mysql:/var/lib/mysql  mysql

2、添加PHP快速启动脚本:

sudo vim start_docker_php.sh

添加以下内容并保存:

sudo docker run --name php \
--link=mysql:mysql -d \
-v ~/nginx/www:/home/www \
-v ~/nginx/logs:/var/log/nginx \
-v /tmp:/tmp \
-v /etc/localtime:/etc/localtime --privileged=true \
php:5.6-fpm

3、添加Nginx 快速启动脚本:

sudo vim start_docker_nginx.sh

添加以下内容并保存:

sudo docker stop nginx
sudo docker rm nginx
sudo docker run \
--name nginx \
--link=php:php \
--link=mysql:mysql \
-d -p 80:80 \
-v ~/nginx/www:/home/www \
-v ~/nginx/vhosts:/etc/nginx/conf.d \
-v ~/nginx/logs:/var/log/nginx \
nginx

4、添加Redis 快速启动脚本

sudo vim start_docker_redis.sh

添加以下内容并保存:

sudo docker run -p 6379:6379 -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes

【docker系列】docker深入浅出之安装Nginx+PHP+MySQL相关推荐

  1. Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)

    转载地址:https://www.cnblogs.com/spec-dog/p/11320513.html 开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的 ...

  2. 【docker】第二节:安装nginx、mysql、php

    教程:centos下docker的安装教程 范围:用于docker的nmp环境的安装,nmp全称是nginx.mysql.php. 安装前先创建一个dockerHub的帐号 步骤一:先注册一个dock ...

  3. 今天用pro安装nginx+php+mysql出现故障的解决方法

    今天用pro安装nginx+php+mysql出现故障的解决方法 by 伍雪颖 dyld: Library not loaded: @@HOMEBREW_CELLAR@@/openssl/1.0.1h ...

  4. Docker系列 一. CentOS上安装Docker

    1.环境&工具: 阿里云轻量级服务器.Centos7系统.FinalShell(其他连接客户端也可以) 2.步骤: 2.1 安装docker 2.1.1 以root身份登录服务器 2.1.2查 ...

  5. [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  6. docker里面装mysql_docker中安装及使用mysql

    打算构造一个环境较全的linux环境,所以在本地弄了个docker.然后pull了一个centos的镜像,并打算在此镜像的基本上,构建适合自己的镜像.但在使用时,发现了各种问题,还是费了一些功夫.原因 ...

  7. docker-compose 安装nginx php mysql phpadmin

    一 摘要 本文主要介绍基于docker docker-compose 安装 lnmp 三件套,以及用phpmysadmin 验证下部署可正确. 二 环境信息 2.1 操作系统 [root@202300 ...

  8. nginx重新编译安装mysql_Centos 6.5编译安装Nginx+php+Mysql

    说明: 操作系统:CentOS 6.5 64位 准备篇: 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 二.配置防火墙,开启80端口.3306端口 vi /etc/sysconf ...

  9. [腾讯云]简单在腾讯云 CenTOS7.0 安装Nginx,Mysql(MariaDB),Memcache,解析PHP!

    1.安装LNMP之前要安装EPEL,以便安装源以外的软件,如Nginx,phpMyAdmin等. yum install epel-release 2.安装Nginx a) yum install n ...

  10. linux 安装nginx php mysql 配置文件在哪_linux下 php+nginx+mysql安装配置

    我主要是用来安装php,以及nginx和php的交互. 一 安装插件 可以选择YUM安装或者源码编译安装gccgcc-c++zlib pcre pcre-devel libevent libevent ...

最新文章

  1. Java重写equals()和hashCode()
  2. 不好好学习会被AI开除的!俄罗斯校园将启用AI,识别差生,建议开除
  3. Redis进阶-无所不知的info命令诊断redis
  4. [PAT乙级]1023 组个最小数
  5. CF1416E-Split【dp,set】
  6. C++设计模式-抽象工厂模式
  7. oracle与raw device
  8. mysql自定义函数的分号_MySQL之自定义函数实例讲解
  9. JUnit5 @BeforeAll注解示例
  10. cad常青藤插件_CAD 2020软件安装包+插件大合集+完整视频教程,自学也可以的
  11. 源码学习-String类
  12. ABP实现EF执行SQL(增删改查)解决方案
  13. 《那些年啊,那些事——一个程序员的奋斗史》——53
  14. 如何选择好的健身房管理系统而且还不收费
  15. 关于Ubuntu下firefox无法观看视频的解决
  16. Python脚本调用谷歌浏览器的谷歌翻译
  17. 如何使用Qt调试飞机大战
  18. Android 高级UI解密 (三) :Canvas裁剪 与 二维、三维Camera几何变换(图层Layer原理)
  19. 微信朋友圈营销如何做好头像_昵称_签名_背景基础设置?
  20. DOS时代往事的回忆

热门文章

  1. 简约清新二次元引导个人主页源码
  2. 放置江湖html5源码,「放置江湖」——经典文字类放置武侠手游
  3. EdrawMax使用方法
  4. VMware15安装MAC(MAC OS 10.13)(OS X 10.14)原版可升级最新可解锁macOS Unlocker3.0(OS X 10.13)
  5. 留存记录:Graph500-2.1.4教程
  6. 深入浅出统计学读后感
  7. 淘宝手淘搜索怎么做?大神导航,一个神奇的网站,从此开启大神之路!
  8. RoomIt屏幕画笔工具
  9. 蓝桥杯 C语言 试题 基础练习 FJ的字符串
  10. KELL *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS