关于什么是Docker,简单的说Docker就是现在最热门的容器引擎技术. 这里不再累赘介绍, 如果你听说过Docker, 那你肯定会听过 “镜像”, “容器” 之类的关键词. 不过, 这篇博客并不是系统地介绍 Docker 的基础知识. 实际上Docker的功能很强大,知识面也很广, 用一篇文章也不足以介绍docker. 这篇博客使用一个简单的示例, 给大家演示Docker怎么快速搭建服务器环境.
docker公司提供了Docker EE(Enterprise Edition) 和 Docker CE (Community Edition)版本, EE 版本涉及商业服务. 而CE版本是Docker的免费产品, 包含了完整的Docker平台
我们可以从各个Linux发行版本的软件库中安装,也可以直接从官方提供的脚本安装,这样能安装最新的版本. 因为在国内, 我们可以直接通过阿里云镜像安装, 使用以下代码
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成之后我们可以使用以下命令查看Docker版本信息
docker -v
我们可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,添加以下代码
{
"registry-mirrors": ["https://g6ogy192.mirror.aliyuncs.com"]
}
重启Docker服务后,我们下载的官方镜像会从阿里云上去拉取,不过私人镜像还是从Docker官方的Dockerhub去拉取.Debian中使用以下代码重启Docker服务
systemctl restart docker
目前比较热门的服务器是 Apache 和 Nginx ,实际上, 他们各自有优缺点, 不能说谁好谁坏, 适合自己的才是最好的. 今天我们基于PHP的官方Docker镜像 php-apache 来搭建apache服务器基础环境. 详细文档可以参考https://hub.docker.com/_/php
实际上,Dockerhub上官方的php-apache镜像扩展很少,很难满足实际项目中最基本的依赖需求.因此在 php:7.2-apache官方镜像的基础之上我安装了 gd 库(用来处理图片),并安装了 mysqli 和 pdo_mysql扩展,用来驱动 mysql数据库. 详细内容可以参考我的个人dockerhub仓库链接 https://hub.docker.com/r/jkdev/php
我们直接使用以下命令拉取自定义的镜像
# 拉取镜像
docker pull jkdev/php:7.2-apache
# 拉取完成之后,查看本地镜像
docker images
我们在服务器上创建一个专门存放web项目的目录,如下代码
# 创建目录
mkdir /www
# 进入目录
cd /www
现在我们基于jkdev/php:7.2-apache镜像创建Docker容器,并把/www目录映射到docker中对应的apache的web项目目录. 如下代码:
docker run -d -p 80:80 -p 443:443 -p 465:465 --name apache -v /etc/localtime:/etc/localtime:ro -v "$PWD":/var/www/html jkdev/php:7.2-apache
命令与参数说明:
我们使用的镜像中,apache集成了php环境,所以基于此镜像启动的容器可以作为html代码和php代码的容器,并且向公网开放. 下面我们从github上拉取一个html简单项目,作为部署的网站
# 首先确定我们所在的目录是前面指定web目录
cd /www
# 更新软件仓库
apt update
# 安装git
apt install git
# 从github拉去一份开源代码
git clone https://github.com/kotlindev/HTML-News-Page.git
# 将源代码复制到web根目录
mv HTML-News-Page/* ./
好了,现在我们打开浏览器,就可以看到我们部署的HTML静态界面了
实际上,这篇博客并不是系统地介绍dcoker基础知识,只是使用简单演示一下docker的一个使用场景, ,apache服务器也不仅仅这些知识. 我们也能感受到docker部署项目的方便与快捷.
之后,我将继续使用文章的形式,更系统地介绍docker的基础知识.
原创禁止转载,作者博客原地址 blog.jkdev.cn