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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现