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

6 篇文章 0 订阅
6 篇文章 0 订阅

一、简介

本人最近对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报错

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

  • 启动容器
  • 安装nginx
    安装部分参考文章Centos7安装nginx(一),本文重点讲解如何启动docker容器,避免在配置systemctl来管理nginx时出现报错信息。
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解析器不兼容等原因导致字符书写错误,导致安装失败。本文属于原创,若有引用请注明出处。若有疑问或错误,欢迎各位指出,可以评论或者跟本人联系。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值