Docker 火了这么多年,我也要学习体验一下。就在阿里云的服务器上部署一个 Nginx+MariaDB+PHP 环境吧。
安装
不同系统的安装方法见官方文档,包括了 Linux 的几个发行版和 Windows、MacOS 的详细步骤。我在 Linux 系统上安装。装完记得运行systemctl enable docker
把 docker 调成自动启动。
Docker Hub
Docker 的各种 images 会发布在 Docker Hub,要善用这个网站来搜索想要的资源。
网络
在创建 docker 容器(container)之前,先考虑一下网络的架构。我打算创建 3 个容器:nginx、mariadb、php,其中,需要暴露的端口只有 nginx 容器的 80 (443) 端口。根据这篇文档中的:
User-defined bridge networks are best when you need multiple containers to communicate on the same Docker host.
我应该选择 bridge 网络,bridge 的具体的使用见此文档。在宿主机上运行
docker network create --driver bridge my_bridge
创建一个名称为 my_bridge 的bridge。
Nginx
先把 Nginx image 拉下来:docker pull nginx
,默认会拉 latest 这个 tag (tags 可以在 Docker Hub 先搜索 nginx 然后点进去找到)。
接下来创建容器:
docker run --name my_nginx --network my_bridge -p 80:80 -v /var/www/php_env:/usr/share/nginx/html -e TZ="Asia/Shanghai" -d --restart always nginx
参数解释:(详情见文档)
--name my_nginx 容器命名为my_nginx --network my_bridge 连接到my_bridge网络 -p 80:80 把容器的80端口(后)暴露为宿主机的80端口(前) -v /var/www/php_env:/usr/share/nginx/html 把宿主机的目录(前)mount到容器的指定路径 -e TZ="Asia/Shanghai" 设置环境变量 -d 在后台运行 --restart always 自动启动、重启 nginx image名称
如无意外,浏览器可以访问http://服务器IP
的网页了。