Docker的镜像制作与整套项目一键打包部署的实现

论坛 期权论坛 脚本     
niminba   2021-5-23 04:24   2597   0

Dockerfile常用指令介绍

指令 描述
FROM 构建的新镜像是基于哪个镜像。例如:FROM centos:6
MAINTAINER 镜像维护者姓名或邮箱地址。例如:MAINTAINER Mr.chen
RUN 构建镜像时运行的Shell命令。例如:RUN ["yum","install","httpd"]
  或者RUN yum install httpd
CMD 运行容器时执行的Shell命令(可以被运行时传递的参数覆盖)。例如:CMD ["-c","/start.sh"]
  或者CMD ["/usr/sbin/sshd","-D"]或者CMD /usr/sbin/sshd -D
EXPOSE 声明容器运行的服务端口。例如:EXPOSE 80 443
ENV 设置容器内环境变量。例如:ENV MYSQL_ROOT_PASSWORD 123456
ADD 拷贝文件或目录到镜像(可以自动解压缩或者下载)
  例如:ADD ["src","dest"]或者ADD https://xxx.com/html.tar.gz /var/www/html
  或者:ADD html.tar.gz /var/www/html
COPY 拷贝文件或目录到镜像(不能自动解压缩)。例如:COPY ./start.sh /start.sh
ENTRYPOINT 运行容器时执行的Shell命令(不能被运行时传递的参数覆盖)。例如:ENTRYPOINT ["/bin/bash","-c","/start.sh"]
  或者ENTRYPOINT /bin/bash -c "/start.sh"
VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器
  例如:VOLUME ["/var/lib/mysql"]
USER 为RUN,CMD和ENTRYPOINT执行命令指定运行用户
  例如:USER Mr_chen
WORKDIR 为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录(指定进入容器中默认被切换的目录)。
  例如:WORKDIR /data
HEALTHCHECK 健康检查。例如:HEALTHCHECK --interval=5m --timeout=3s --retries=3
  CMD curl -f http://localhost/ || exit 1
ARG 在构建镜像时指定一些参数。例如:ARG user

利用Dockerfile编写简单的nginxWeb镜像

#首先开启ipv4转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p
net.ipv4.ip_forward = 1

#创建nginx的镜像目录
mkdir -p dockerfile/lib/centos/nginx
cd dockerfile/lib/centos/nginx

#准备Dockerfile文件
vim Dockerfile
FROM centos:7    #构建的新镜像是基于哪个镜像(构建的nginx是基于centos7构建的,依赖centos7的系统支持,如果没有镜像自动下载)
MAINTAINER wk    #镜像制作人   
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel   #构建镜像时运行shell命令,yum安装nginx的依赖包
ADD nginx-1.12.1.tar.gz /tmp     #拷贝文件或目录到镜像下,遇到压缩文件自动解压缩
RUN cd /tmp/nginx-1.12.1 && \     #运行shell命令编译安装nginx,make -j 给与2个线程编译 
  ./configure --prefix=/usr/local/nginx && \
  make -j 2 && \
  make install
RUN rm -rf /tmp/nginx-1.12.1* && yum clean all      #删除nginx源码包和清空yum缓存,使容器最轻量化
COPY nginx.conf /usr/local/nginx/conf          #拷贝文件或目录到镜像 
WORKDIR /usr/local/nginx                   #为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录(指定进入容器中默认被切换的目录)。
EXPOSE 80                            #声明容器的端口号
CMD ["./sbin/nginx", "-g", "daemon off;"]         #运行容器时执行的shell命令 -g daemon off 不以守护进程的方式开启nginx,即不以后台运行的方式开启nginx
#将事先准备好的nginx-1.12.1.tar.gz和nginx.conf配置文件拷贝到当前目录下
ls
Dockerfile nginx-1.12.1.tar.gz nginx.conf

#build基于nginx的docker镜像
docker build -t nginx:1 .
#nginx主配置文件cat conf/nginx.conf
user root; 
worker_processes auto; 

error_log logs/error.log info;

pid    logs/nginx.pCB\\Nyyc.byy..#ycz)9..TB\CBB\\[\[YH[B][W\˙^[\KNCBB][[IX\CBCBOOB]Bb,9i:/leg9`-/g9.#m9ie :e+dlk,y.,:/9&al:eg9`-/g9.#dlaykz+'9c..cy%c"9al#9&.#i&i&+/c.
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP