构建Docker镜像指南,含实战案例
程序员文章站
2022-05-07 08:39:57
...
Dockerfile介绍
Dockerfile是构建镜像的指令文件,由一组指令组成,文件中每条指令对应linux中一条命令,在执行构建Docker镜像时,将读取Dockerfile中的指令,根据指令来操作生成指定Docker镜像。
Dockerfile结构:主要由基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。每行支持一条指令,每条指令可以携带多个参数。注释可以使用#
开头。
指令说明
FROM 镜像 : 指定新的镜像所基于的镜像
MAINTAINER 名字 : 说明新镜像的维护(制作)人,留下标记
RUN 命令 : 在所基于的镜像上执行命令,并提交到新的镜像中
CMD [“要运行的程序”,“参数1”,“参数2”] : 指定启动容器时要运行的命令或脚本
EXPOSE端口号 : 指定新镜像加载到Docker时要开启的端口
ENV环境变量 变量值 : 设置一个环境变量的值,会背后面的RUN用到
ADD源文件/目录 目标文件/目录 : 将源文件复制到目标文件 ,源文件和Dockerfile位于同一目录
COPY源文件/目录 目标文件/目录 : 将本地主机的源文件复制到目标目录,源文件和Dockerfile位于同一目录
VOLUME[“目录”] : 在容器中创建一个挂载点
USER 用户名 /UID : 指定运行容器时的用户
WORKDIR路径 : 为后续的RUN 、CMD、ENTRYPOINT 指定工作目录
ONBUILD命令 : 指定所生成的镜像作为一个基础镜像时所要运行的命令。
构建镜像实例
nginx镜像
- 建立工作目录
docker pull centos #下载基础base镜像
mkdir nginx #创建文件夹
cd nginx/
- 创建Dockerfile文件
进入vim编辑模式
vim Dockerfile #编写Dockerfile
vim模式下输入以下内容
# 设置基础镜像
FROM centos
# 维护该镜像的用户
MAINTAINER this is nginx image <zkc>
# 安装环境 下载软件包 并解压
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
RUN tar zxvf nginx-1.9.7.tar.gz
# 工作目录 编译安装
WORKDIR nginx-1.9.7
RUN ./configure --prefix=/usr/local/nginx && make && make install
# 开启 80 和443端口
EXPOSE 80
EXPOSE 443
# 修改配置文件,以非 deamon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
# 复制服务脚本并设置权限
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# 启动容器时执行脚本
CMD ["/run.sh"]
- 编写执行脚本
进入vim编辑模式
vim run.sh
vim模式下输入以下内容
#!/bin/bash
/usr/local/nginx/sbin/nginx
- 构建镜像
构建镜像指令后有一个.
输入的时候不要漏掉。.
表示在当前路径下执行,所以需要在Dockerfile 文件的路径下执行构建指令。
docker build -t nginx:new . # 构建镜像
docker run -d -P nginx:new # 运行容器
docker ps -a # 查看当前所有容器
推荐阅读