Docker新手入门之六:Docker在生产环境中的使用实践

本文详述了Docker在生产环境中的使用,涵盖Jekyll框架网站的搭建,包括Jekyll和Apache镜像的构建,网站更新和备份。接着讲解了如何使用Docker构建Java项目,以及多容器应用栈的实现,如Node.js应用与Redis集群。最后讨论了Docker容器的管理和日志捕获方法。
摘要由CSDN通过智能技术生成

转载过程中,图片丢失,代码显示错乱。

为了更好的学习内容,请访问原创版本:

https://www.missshi.cn/api/view/blog/5a6328110a745f6335000006

Ps:初次访问由于js文件较大,请耐心等候(5s左右)

 

 

在之前的文章中,我们简要介绍的Docker的一些简单实践。
接下来,我们将在本文中进行类似内容的讲解,不过相比而言,使用Docker部署的服务将会更加的复杂。

搭建Jekyll框架的网站

本文中我们将要构建的第一个应用是一个使用Jekyll框架的自定义网站。 
该网站会包括以下两个镜像:

  • 一个镜像安装了Jekyll及其相关的软件包
  • 一个镜像安装了Apache服务用于使网站正常运行。

则以后开发过程可以转化如下:

  1. 创建Jekyll基础镜像和Apache镜像
  2. 利用Jekyll镜像创建一个容器并通过卷挂载网站的源代码。
  3. 使用Apache镜像创建一个容器,这个容器利用包含编译后的网站的卷并为其服务。
  4. 网站更新时跳转至步骤2重复执行。

Jekyll基础镜像

首先,我们需要创建第一个Jekyll基础镜像。 
我们需要创建一个新的目录并创建该镜像所需要的Dockerfile文件。

 
  1. mkdir jekyll
  2. cd jekyll
  3. touch Dockerfile

修改Dockerfile文件如下:

 
  1. FROM ubuntu:16.04
  2. MAINTAINER nianshi <nianshi0912@gmail.com>
  3. ENV REFRESHED_AT 2018-02-17
  4. RUN apt-get -qq update
  5. RUN apt-get -qq install ruby ruby-dev build-essential nodejs libffi-dev
  6. RUN gem install --no-rdoc --no-ri jekyll
  7. VOLUME /data
  8. VOLUME /var/www/html
  9. WORKDIR /data
  10. ENTRYPOINT [ "jekyll", "build", "--destination=/var/www/html" ]

在该Dockerfile文件中,我们首先安装了Ruby和相关的包,此外,我们使用VOLUME指令创建了两个卷:/data/用于存放网站的源代码,/var/www/html用于存放编译后的Jekyll文件。

构建Jekyll基础镜像

创建好Dockerfile文件后,我们可以执行如下命令来构建镜像:

 
  1. docker build -t nianshi/jekyll .

命令执行完成后,我们则创建完成了一个jekyll的基础镜像。

Apache基础镜像

接下来,我们需要继续创建一个新的文件夹用于构建Apache镜像。

 
  1. mkdir apache
  2. cd apache
  3. touch Dockerfile

修改Dockerfile文件如下:

 
  1. FROM ubuntu:16.04
  2. MAINTAINER nianshi <nianshi0912@gmail.com>
  3. RUN apt-get -qq update
  4. RUN apt-get -qq install apache2
  5. VOLUME [ "/var/www/html" ]
  6. WORKDIR /var/www/html
  7. ENV APACHE_RUN_USER www-data
  8. ENV APACHE_RUN_GROUP www-data
  9. ENV APACHE_LOG_DIR /var/log/apache2
  10. ENV APACHE_PID_FILE /var/run/apache2.pid
  11. ENV APACHE_RUN_DIR /var/run/apache2
  12. ENV APACHE_LOCK_DIR /var/lock/apache2
  13. RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR
  14. EXPOSE 80
  15. ENTRYPOINT [ "/usr/sbin/apache2" ]
  16. CMD ["-D", "FOREGROUND"]

构建Apache镜像

创建好Dockerfile文件后,我们可以执行如下命令来构建镜像:

 
  1. docker build -t nianshi/apache .

命令执行完成后,我们则创建完成了一个apache的基础镜像。

启动Jekyll网站

现在,我们已经完成了两个基础镜像的构建了。 
下面,我们需要启动容器来构建我们的网站了: 
首先需要下载网站所需要的源代码:http://www.missshi.cn/#/adminBook?_k=95xjmw 
访问资源下载页面,搜索Jekyll示例服务依赖代码下载并解压即可,此处我们假设解压目录是/home/nianshi/blog_demo。 
此时,我们可以执行如下命令来启动Jekyll容器:

 
  1. docker run -v /home/nianshi/blog_demo:/data/ --name blog_demo nianshi/jekyll

此时,我们启动了一个blog_demo的容器,并对卷进行了挂载,其中,本地的/home/nianshi/blog_demo目录挂载到的容器中的/data/文件夹下。另外容器对源代码编译后生成的代码会存放在/var/www/html/卷下。

接下来,我们期望启动一个Apache容器,同时希望Apache容器可以连接到Jekyll容器中/var/www/html/卷下获取编译后的文件。 
我们可以执行如下命令:

 
  1. docker run -d -P --name apache --volumes-from blog_demo nianshi/apache

在上述命令中,出现了一个新的参数--volumes-from,该参数用于连接一个卷,从而可以访问到指定容器中的所有的卷。 
Ps:当所有使用某个卷的容器全部都被rm命令删除后,该卷会被自动释放。

下面我们来查看一下我们的容器映射到了机器的哪个端口吧:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WangZhe0912

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值