Docker 安裝 nginx

建立Dockerfile文件

FROM centos:centos7
MAINTAINER xxx "[email protected]"

#安裝庫
RUN yum install -y epel-release ; yum clean all
#安裝nginx
RUN yum install -y nginx ; yum clean all

EXPOSE 80

CMD ["nginx"]

生成images

docker build -t xxx/nginx .

生成了xxx/nginx鏡像

運行生成容器

docker exec -it mynginx xxx/nginx /bin/bash

成功運行並進入了容器,但是按Ctrl+P+Q退出後,容器就停止了,需要加參數 -d

docker exec -itd mynginx xxx/nginx /bin/bash

問題來了,nginx不能運行,baidu了N久沒有半點眉目,既然是centos7,用systemctl運行nginx服務吧,誰知道竟然報錯了

Failed to get D-BUS connection: Operation no permitted

有網友說dbus-daemon沒能啓動。systemctl並不是不能使用。將CMD或者entrypoint設置爲/usr/sbin/init即可。docker容器會自動將dbus等服務啓動起來。嘗試了下

docker run --name mynginx -p 80:80 -itd xxx/nginx /usr/sbin/init

竟然成功了,啓動nginx服務

systemctl enable nginx
systemctl start nginx

然後,將修改的重新打包入鏡像

docker commit mynginx xxx/nginx
下次再啓動就不需要那麼多參數了。

也可以修改Dockerfile

FROM centos:centos7
MAINTAINER xxx "[email protected]"

#安裝庫
RUN yum install -y epel-release ; yum clean all
#安裝nginx
RUN yum install -y nginx ; yum clean all

EXPOSE 80

CMD ["/usr/sbin/init"]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章