Ubuntu下Docker 搭建 LNMP 环境
安装 Docker
创建一个名为 docker的目录,我们将在此目录下安装 Docker:
$ mkdir ~/docker && cd ~/docker
$ sudo apt-get -y install docker.io
完成后,可以通过 docker version 来查看 Docker 的版本信息。docker help 来查看 Docker 的帮助文档。
更换 Docker 镜像源
Docker 工作的基本即使镜像。额可以认为一个镜像就是一个独立的由应用组成的虚拟机。因此,Docker 建立了 Docker Hub 来贮存镜像(就像 Github 语言)。
但由于网络的原因,Docker Hub 的访问速度很慢,推荐更换为国内的镜像源地址。下面我们采用 腾讯云 Docker 镜像加速,打开 /etc/docker/daemon.json 镜像配置文件:
$ vim /etc/docker/daemon.json
将配置更改如下:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
退出保存 Vim 编辑器,输入以下命令重启 Docker:
$ systemctl restart docker
下载需要用到的 Docker 镜像
Docker 使用 docker pull <镜像> 来完成镜像的拉取,下面我们将要下载的镜像的有:
- Nginx
- PHP
- PostgreSQL
可以随时通过使用sudo docker image ls来查看已下载的镜像。
下载 Nginx 镜像
运行以下命令:
$ sudo docker pull nginx:alpine
下载 PHP 镜像
运行以下命令:
$ sudo docker pull php:7-fpm-alpine
下载 PostgreSQL 镜像
我们使用 PostgreSQL 代替 Mysql。两者在使用上的差异并不大,但是从大小上看, PostgreSQL 更适合于容器化,因此我们选择了它。
运行以下命令:
$ sudo docker pull postgres:alpine
启动 Nginx
我们将使用 docker run 来启动容器(启动后的镜像即为容器).
启动容器
通过以下命令启动容器:
$ sudo docker run --rm -d -p 80:80 --name nginx nginx:alpine

命令中涉及的参数:
--rm: 表示这个容器执行完后会被直接销毁--name: 指定这个容器的名称-d: 表示这个容器会在后台运行-p: 表示开发容器的 80 端口到主机的 80端口-v: 表示将 nginx 的配置文件挂载到容器的对应目录下
如果发现无法访问,请检查以下:- 网址是否正确
- 容器是否正确
- 容器的80端口是否开放
停止容器
完成后可以在本机地址(http://localhost 或者http://127.0.0.1)上看到 Nginx 的默认欢迎界面。
我们可以使用以下命令停止一个容器:
sudo docker stop <容器ID或容器名称>
- 容器ID就是您在运行上面那个命令时显示的一串字符,或者也可以使用
sudo docker container ls来查看所有容器及其ID。 - 对于使用容器ID停止容器,您可以只输入前几个字符,Docker会自动匹配剩下的字符。
- 但是对于使用容器名称停止容器,您必须完整地输入容器名称。
例如:sudo docker stop 10d4b
尝试停止Nginx:
$ sudo docker stop nginx
启动 PHP
由于 LNMP 共由3个容器组成,单个启动过于麻烦,推荐您使用 docker-compose 管理并启动它们。
安装 docker-compose
docker-compose 是 Docker 的多个服务部署工具,以方便地同时启动多个容器。
您可以使用以下命令方便地安装它。
$ sudo apt-get install -y python-pip && sudo pip install docker-compose
创建 docker-compose 的配置文件
对于每一个你希望使用 docker-compose 来启动的项目,你都可以在项目的根目录下配置docker-compose.yml文件
下面我们来创建 docker-compose.yml 文件:
$ touch ~/docker/docker-compose.yml
编辑 docker-compose 的配置文件
打开 docker-compose.yml 文件进行编辑,参考内容如下:
version: "3"
services:
Nginx:
image: nginx:alpine
ports:
- 80:80
volumes:
- ./web:/usr/share/nginx/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
PHP:
image: undefined01/php:7-fpm-alpine
volumes:
- ./web:/var/www/html:rw
Database:
image: postgres:alpine
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "rootroot"
volumes:
- ./data:/var/lib/postgresql/data:rw
这个配置文件中涉及到的参数有:
version: 表示这个配置文件使用第三套标准services: 表示需要启动的服务(容器)
对于每一个服务,又有:image: 表示该服务使用的惊醒ports: 表示该服务开放的端口volumes: 表示将某目录或文件挂载到容器的响应位置上,后面的ro、rw表示对于容器是否可读写。此处挂载了配置文件、数据库和网站代码。enviornment: 设置该容器的环境变量。此处通过环境变量的形式设置数据库的账号和密码。
创建 Nginx 的配置文件
创建nginx.conf文件:
$ touch ~/docker/nginx.conf
本文来自博客园,作者:hahaking,转载请注明原文链接:https://www.cnblogs.com/hahaking/p/16117791.html
浙公网安备 33010602011771号