建立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"]