指令 描述
FROM 构建新镜像是基于哪个镜像
LABEL 标签
RUN 构建镜像时运行的Shell命令
COPY 拷贝文件或目录到镜像中
ENV 设置环境变量
USER 为RUN、CMD和ENTRYPOINT执行命令指定运行用户
EXPOSE 声明容器运行的服务端口
WORKDIR 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录
ENTRYPOINT 运行容器时执行,如果有多个ENTRYPOINT指令,最后一个生效
CMD 运行容器时执行,如果有多个CMD指令,最后一个生效
制作nginx基础镜像:
docker run -itd --name test centos:7
docker exec -it test bash
yum install -y gcc gcc-c++ make openssl-devel pcre-devel
exit
下载nginx源码包:http://nginx.org/en/download.html
上传源码包到/home目录
cd /home
docker cp nginx-1.18.0.tar.gz test:/
tar -zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
make -j 4(多线程编译)
make install
/usr/local/nginx/sbin/nginx
ps -ef
curl 127.0.0.1
date
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
exit
源码安装:
0. 安装依赖包,例如gcc、make
1、./configure
2、make
3、make install
FROM centos:7
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
RUN ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module && \
make -j 4&& \
make install
编写Dockerfile的技巧:(镜像是分层的,在下一层不能控制上一层里的文件)1、如果追求镜像更小,选择alpine
2、运行的Shell命令尽可能写到一个RUN里面,减少镜像层
3、清理部署时产生的缓存或者文件
# 编写Dockerfile
mkdir nginx
cd nginx
vi Dockerfile
mv ../nginx-1.18.0.tar.gz ./
vi Dockerfile
样例:
FROM centos:7
LABEL maintainer bear
RUN yum install -y gcc gcc-c++ make \
openssl-devel pcre-devel gd-devel \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/*
COPY nginx-1.18.0.tar.gz /
RUN tar zxf nginx-1.18.0.tar.gz && \
cd nginx-1.18.0 && \
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module && \
make -j 4 && make install && \
rm -rf /usr/local/nginx/html/* && \
echo "ok" >> /usr/local/nginx/html/status.html && \
cd / && rm -rf nginx* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/nginx/sbin
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t nginx:v1 .
docker ps
docker images
docker run -d -p 81:80 nginx
docker ps -l
docker run -d -p 82:80 nginx:v1
docker ps -l
docker logs 968809abb47f