Docker(二):Dockfile制作简单镜像

一、Dockfile制作一个简单的镜像

实现功能:

  • 拉取centos镜像,安装wget、jdk、git、maven软件,并设置环境变量
  • 下载代码,并执行测试用例

Dockerfile文件

FROM centos

ADD entrypoint.sh /root
ADD jdk /usr/local/jdk/

RUN yum install -y wget
RUN yum install -y git
RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
RUN tar -zxvf apache-maven-3.6.3-bin.tar.gz
RUN mv apache-maven-3.6.3 /usr/local


ENV JAVA_HOME=/usr/local/jdk/
ENV MAVEN_HOME=/usr/local/apache-maven-3.6.3
ENV PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin

ENTRYPOINT ["/bin/bash","/root/entrypoint.sh"]

上面多条的RUN命令也可以合并执行,替换成

RUN yum install -y wget \
&& yum install -y git \
&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz \
&& tar -zxvf apache-maven-3.6.3-bin.tar.gz \
&& mv apache-maven-3.6.3 /usr/local

entrypoint.sh文件

#/bin/bash

git clone https://github.com/ycwdaaaa/techUI
cd techUI
mvn test

最后用docker build -t newimage . 在当前工作目录下打一个镜像

二、Dockerfile参数详解

  • FROM:指定基础镜像,必须为第一个命令
  • RUN:构建镜像时执行的命令
  • ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
  • COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
  • CMD:构建容器后调用,也就是在容器启动时才进行调用。
  • ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
  • ENV:设置环境变量
  • WORKDIR:工作目录,类似于cd命令
  • LABEL:用于为镜像添加元数据
  • EXPOSE:指定于外界交互的端口

参考https://www.cnblogs.com/panwenbin-logs/p/8007348.html

三、私有镜像仓库--镜像的上传和拉取

docker pull registry
docker run -d -p 5000:5000 -v /usr/local/registry:/var/lib/registry --restart=always --name registry registry:latest    
# --restart=always 此参数保证当docker重启后,容器也会重新启动   -v  宿主机目录挂载到容器中
docker pull busybox          #拉取busybox镜像
docker tag busybox localhost:5000/bosybox:v1.0   #打tag
docker push localhost:5000/bosybox:v1.0  #push到私有镜像仓库
curl http://localhost:5000/v2/_catalog
posted @ 2020-05-13 11:20  起名字好难~  阅读(423)  评论(0编辑  收藏  举报