添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
最近几天研究了 docker ,出现这么个情况,我写了一个自建 lamp 的 dockerfile ,这个 dockerfile build的镜像能够在新建的容器里搭建 lamp 环境。写这个 dockerfile 的初衷是可以随时新建一个已经启动好 mysql 和 httpd 的容器,但是却实现不了,CMD 和 ENTRYPOINT 写的命令无法生效。因为 lamp 的 dockerfile 有点长,为了形象说明我的问题,我用铭哥写的安装 nginx 举个例子。
  1. # 搭建 nginx 镜像
  2. # Based on CentOS
  3. FROM centos
  4. MAINTAINER wangyl [email protected]
  5. # 安装所需要的库文件
  6. RUN yum install -y pcre-devel wget net-tools gcc
  7. RUN yum install -y zlib zlib-devel make
  8. RUN yum install -y openssl-devel
  9. # 安装 Nginx
  10. ADD http://nginx.org/download/nginx-1.8.0.tar.gz .
  11. RUN tar zxvf nginx-1.8.0.tar.gz
  12. RUN mkdir -p /usr/local/nginx
  13. RUN cd nginx-1.8.0 && ./configure --prefix=/usr/local/nginx && make && make install
  14. RUN rm -fv /usr/local/nginx/conf/nginx.conf
  15. COPY .nginx_conf /usr/local/nginx/conf/nginx.conf
  16. # 把80端口暴露出来
  17. EXPOSE 80
  18. # 添加 Nginx 的启动脚本
  19. # COPY /run.sh /usr/local/sbin/run.sh
  20. # RUN chmod 755 /usr/local/sbin/run.sh
  21. # When creating a new container
  22. ENTRYPOINT ["/bin/bash","/usr/local/nginx/sbin/nginx","-c","/usr/local/nginx/conf/nginx.conf"]
docker build centos_nginx .
然后启动容器
docker run -itd centos_nginx /bin/bash
docker exec -it 容器id /bin/bash
进入容器后,nginx 并没有启动,只能手动启动 nginx 。上面的 Dockerfile 的 ENTRYPOINT 换成 CMD 也不行,请铭哥和大家帮忙解决下问题。 ENTRYPOINT service tomcat7 start #运行几秒钟之后,容器就会退出
CMD service tomcat7 start #运行几秒钟之后,容器就会退出
这样有效:
ENTRYPOINT service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
所以,你可以在Dockerfile中最后一行改成:
ENTRYPOINT   /usr/local/nginx/sbin/nginx  &&  tail -f /etc/passwd