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