Dockerfile 内容如下:
FROM centos
RUN yum install -y ncurses \
ncurses-devel \
perl \
cmake \
bison \
openssl-devel \
zlib-devel \
file \
curl \
zlib \
openssl \
openssl-devel \
pcre \
pcre-devel \
libxml2 \
libxml2-dev \
libxslt \
libxslt-devel \
openssh-clients \
openssh-devel \
make \
gcc \
gcc-c++ \
autoconf
RUN groupadd www && useradd -g www -s /sbin/nologin www
RUN mkdir -p /data/logs && chown www:www /data/logs ; \
mkdir -p /data/web/webclose && chown www:www /data/web && chmod 700 /data/web/webclose ; \
mkdir -p /data/conf/nginx ;\
mkdir -p /usr/local/nginx ;\
mkdir -p /dist/{dist,src}
ADD ["nginx.tar.gz","/data/conf/"]
ADD ["nginx-1.13.11.tar.gz","/dist/src/"]
RUN cd /dist/src/nginx-1.13.11 && ./configure --user=www --group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_secure_link_module && make && make install ;\
[ -d "/usr/local/nginx/conf" ] && rm -rf /usr/local/nginx/conf && ln -sv /data/conf/nginx /usr/local/nginx/conf
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;","-c","/data/conf/nginx/nginx.conf"]
当前目录需要的文件:
[root@docker-machine_192.168.31.129 docker]# ll
total 1008
-rw-r--r-- 1 root root 1453 Jul 18 09:59 Dockerfile
-rw-r--r-- 1 root root 1016189 Apr 4 18:01 nginx-1.13.11.tar.gz
-rw-rw-r-- 1 root root 7134 Jul 18 09:23 nginx.tar.gz
nginx.tar.gz 是自己定制好的nginx.conf、vhost等配置文件
制作镜像:
[root@docker-machine_192.168.31.129 docker]# docker build -t my_centos_with_nginx:v1 .
启动容器:
[root@docker-machine_192.168.31.129 docker]# docker run -i -t -d -p 80:80 my_centos_with_nginx:v1
085298fc89927068212755e94b9f5cb2f6e1553bef6edb8f105fa71a2d15e31f
查看:
[root@docker-machine_192.168.31.129 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
085298fc8992 my_centos_with_nginx:v1 "/usr/local/nginx/sb 48 seconds ago Up 47 seconds 0.0.0.0:80->80/tcp sick_wilson
[root@docker-machine_192.168.31.129 docker]# netstat -tlnp | grep -v sshd
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::80 :::* LISTEN 13197/docker-proxy
容器已经启动了,并映射到本地的80端口
可以用docker exec 进容器看看:
[root@docker-machine_192.168.31.129 docker]# docker exec -it 085298fc8992 /bin/bsh
[root@085298fc8992 /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 45932 3300 ? Ss+ 03:12 0:00 nginx: master process /usr/local/nginx/sbin/nginx -g daemon off; -c /data/conf/nginx/nginx.c
www 6 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 7 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 8 0.0 0.0 46068 1872 ? S+ 03:12 0:00 nginx: worker process
www 9 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 10 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 11 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 12 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 13 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 14 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process
www 15 0.0 0.0 46068 1628 ? S+ 03:12 0:00 nginx: worker process