使用dockerfile制作apache镜像
创建apache目录
[root@localhost ~]# tree apache/
apache/
├── Dockerfile
└── files
├── apr-1.7.0.tar.gz
├── apr-util-1.6.1.tar.gz
└── httpd-2.4.49.tar.gz
1 directory, 4 files
编写Dockerfile
[root@localhost apache]# cat Dockerfile
# 第一行必须指定基于的基础镜像
FROM centos
# 维护者信息
LABEL MAINTAINER='1@2.com'
ENV httpd_version 2.4.49
ENV apr_version 1.7.0
ENV util_version 1.6.1
#传输httpd编译所需的源码包
ADD files/* /usr/src/
WORKDIR /usr/src/
# 镜像操作指令
RUN yum groups mark install 'Development Tools' -y && \
yum -y install wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make && \
useradd -r -M -s /sbin/nologin apache && \
cd apr-$apr_version && \
sed -i '/$RM "$cfgfile"/d' configure && \
./configure --prefix=/usr/local/apr && \
make && make install && \
cd ../apr-util-$util_version && \
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
make && make install && \
cd ../httpd-$httpd_version && \
./configure --prefix=/usr/local/apache \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork && \
make && make install && \
sed -i '/#ServerName/s/#//g' /usr/local/apache/conf/httpd.conf
#开放端口号
EXPOSE 80
# 容器启动时默认要执行的指令
#CMD ["/usr/local/apache/bin/apachectl","-D","FOREGROUND"]
ENTRYPOINT ["/usr/local/apache/bin/apachectl","-D","FOREGROUND"]
创建容器
[root@localhost ~]# docker build -t apache:latest apache
[root@localhost ~]# docker tag a8456b3d7ab6 xxkk/httpd:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xxkk/httpd latest a8456b3d7ab6 About a minute ago 704MB
[root@localhost ~]# docker run -tid --name httpd -p 80:80 a8456b3d7ab6
1bf14551603b8e699d410e0a748856c4a75d709aa7172c0a7429c08158d7c98e
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bf14551603b a8456b3d7ab6 "/usr/local/apache/b…" 44 seconds ago Up 41 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp httpd