Centos7安装nginx(二)之docker中安装nginx

一、简介

本人最近对k8s+docker容器云、微服务进行一些调研,尝试着在docker中安装nginx。先来安利docker一波,真是神器,但是对于docker的有点本人将在docker的相关文章中介绍。

  • 需求:做自动化运维的同学可能需要测试自己写完的shell脚本,docker是一个比虚拟机快照更方便的选择。只需要启动一个docker容器,将写好的脚本以挂载文件的方式,在docker容器中运行即可(copy进去再执行也可以)。
  • 环境: 虚拟机+docker
  • 优点:当shell脚本有问题的时候,直接kill掉docker容器,修改完shell后重启一个容器再运行即可。

二、安裝过程

在docker中安装nginx的步骤跟上一篇文章Centos7安装nginx(一)大致相同。需要注意的是在docker中使用systemctl必须以特殊的方式启动容器,否则会报错Docker: Failed to get D-Bus connection: Operation not permitted

Centos7安装nginx(二)之docker中安装nginx

安装过程主要分为二部分:

  • 启动容器
  • 安装nginx
    安装部分参考文章Centos7安装nginx(一),本文重点讲解如何启动docker容器,避免在配置systemctl来管理nginx时出现报错信息。

1. 启动容器

  • 容器的正确启动姿势
  1. docker pull centos:7(拉取镜像)
    Centos7安装nginx(二)之docker中安装nginx
  2. docker images(查看镜像具体信息)
    Centos7安装nginx(二)之docker中安装nginx
    步骤3中的镜像版本要与拉去下来的版本信息对应
  3. docker run -d --name nginx --privileged=true docker.io/centos:7 /usr/sbin/init(以后台运行的方式启动容器)
    Centos7安装nginx(二)之docker中安装nginx
  4. docker exec -it nginx /bin/bash(进入容器)
    Centos7安装nginx(二)之docker中安装nginx
  • docker容器中使用systemctl报错总结
  1. Docker: Failed to get D-Bus connection: Operation not permitted

    • 原因
      1. 这个的原因是因为dbus-daemon没能启动。启动容器时,带上参数--privileged=true、将你的CMD或者entrypoint设置为/usr/sbin/init即可(两者缺一不可)。会自动将dbus等服务启动起来。
    • 解决办法:
      • 在启动容器时添加参数
        • docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init
        • docker exec -it centos7 /bin/bash
          Centos7安装nginx(二)之docker中安装nginx

2. 安装nginx

参考文章Centos7安装nginx(一)

三、总结

本文主要记录了docker中使用systemctl的报错问题,为下一篇文章通过shell自动化安装nginx做准备。文章可能在编辑过程中,由于个人疏忽、不同版本markdown解析器不兼容等原因导致字符书写错误,导致安装失败。本文属于原创,若有引用请注明出处。若有疑问或错误,欢迎各位指出,可以评论或者跟本人联系。