微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Centos7安装nginx二之docker中安装nginx

一、简介

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

  • 需求:做自动化运维的同学可能需要测试自己写完的shell脚本,docker是一个比虚拟机快照更方便的选择。只需要启动一个docker容器,将写好的脚本以挂载文件的方式,在docker容器中运行即可(copy进去再执行也可以)。
  • 环境: 虚拟机+docker
  • 优点:当shell脚本有问题的时候,直接kill掉docker容器,修改完shell后重启一个容器再运行即可。
  • 目的:为了练习Nginx的安装配置。由于docker使用Linux内核namespace\cgroup等隔离技术,近似等同于虚拟机(有些隔离做的不彻底,不能完全等同于),在docker中练习安装Nginx比跟在虚拟机上安装相差无异,但开销更少。如果仅仅是为了在docker中使用Nginx,只需要直接拉取Nginx镜像再开启容器即可。

二、安裝过程

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

docker中使用systemctl报错

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

1. 启动容器

  • 容器的正确启动姿势
  1. docker pull centos:7(拉取镜像)

    拉取镜像

  2. docker images(查看镜像具体信息)

    镜像信息


    步骤3中的镜像版本要与拉去下来的版本信息对应
  3. docker run -d --name Nginx --privileged=true docker.io/centos:7 /usr/sbin/init(以后台运行的方式启动容器)

    以后台的方式启动容器

  4. docker exec -it Nginx /bin/bash(进入容器)

    以交互的方式进入容器

  • 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

          docker容器中成功使用systemctl

2. 安装Nginx

参考文章Centos7安装nginx(一)

三、总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐