Dockerfile制作DockerImage

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxc024000/article/details/84646103

Dockerfile制作DockerImage

Docker服务器提供了许多Images,可以很方便的pull到本地使用。

# 拉取ubuntu16.04的镜像
docker pull ubuntu:16.04
# 进入到容器内
# -t 在容器内运行一个终端或伪终端
# -i 与容器内的标准输入进行交互(其实就是,交互式)
# 一般-t与-i一起使用
docker run -t -i ubuntu:16.04 /bin/bash

由于开发中存在不同的编译、运行环境,所以需要自制定Images(配好开发环境的系统)以便使用。这时候,可以利用Dockerfile生成自定制的Images。

Dockerfile参数

Dockfile通过一些指定的命令,告诉Docker在需要对Images做哪些操作(比如安装Java,gcc等等)。详细的命令可以参照Docker File。这里给出几个常用命令的含义。

  • FROM
    该命令位于Docker File第一行,告诉Docker使用原生的Images(比如Ubuntu16.04)。
# 使用Docker官网提供的unbuntu 16.04。之后,可以在该Images的基础上,安装环境。
# 下面的介绍,都以Ubuntu系统为例。
FROM ubuntu:16.04
  • RUN,执行指定命令。
# 安装gcc&g++
RUN apt-get update && \
apt-get install -y \
 software-properties-common python-software-properties \
 gcc-5 g++-5 \
 g++-5-multilib g++-multilib && \
rm -rf /var/lib/apt/lists/*

# 配置gcc&g++
# config gcc5.4 && g++5.4
RUN update-alternatives --install "/usr/bin/gcc" "gcc" "/usr/bin/gcc-5" 50 && \ 
 update-alternatives --install "/usr/bin/g++" "g++" "/usr/bin/g++-5" 50 
  • WORKDIR,指定当前工作路径。其实就是相当于Ubuntu的cd命令。
# 指定当前工作路径为根路径
WORKDIR /
  • ENV,设置系统环境变量。
# 配置Java环境变量。
ENV JAVA_HOME=/usr/lib/java8/jdk1.8.0_162
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH=${JAVA_HOME}/bin:$PATH
  • ADD,将文件复制到DockerImages中。如果是压缩文件,会自动解压。
# 安装Java
ADD jdk-8u162-linux-x64.tar.gz /
WORKDIR /
RUN mkdir /usr/lib/java8/ && \
 mv jdk1.8.0_162/ /usr/lib/java8/ && \
 update-alternatives --install "/usr/bin/java" "java" "/usr/lib/java8/jdk1.8.0_162/bin/java" 10 && \
 update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/java8/jdk1.8.0_162/bin/javac" 10 && \
 update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/java8/jdk1.8.0_162/bin/javaws" 10 && \
 update-alternatives --install "/usr/bin/jar" "jar" "/usr/lib/java8/jdk1.8.0_162/bin/jar" 10

Dockerfile小例

  • 使用DockerFile,基于ubuntu:16.04,生成一个Images。该Image安装了g++&gcc5、cmake、Java8等。
  • 目录格式
- TestDocker
---   Dockerfile
---   jdk-8u162-linux-x64.tar.gz
  • Dockerfile内容如下
FROM ubuntu:16.04

# install g++ & gccc
RUN apt-get update && \
apt-get install -y \
 software-properties-common python-software-properties \
 cmake bzip2 ccache gcc-5 g++-5 \
 g++-5-multilib g++-multilib && \
rm -rf /var/lib/apt/lists/*

# config gcc && g++
RUN update-alternatives --install "/usr/bin/gcc" "gcc" "/usr/bin/gcc-5" 50 && \ 
 update-alternatives --install "/usr/bin/g++" "g++" "/usr/bin/g++-5" 50 

# install java
ADD jdk-8u162-linux-x64.tar.gz /
WORKDIR /
RUN mkdir /usr/lib/java8/ && \
 mv jdk1.8.0_162/ /usr/lib/java8/ && \
 update-alternatives --install "/usr/bin/java" "java" "/usr/lib/java8/jdk1.8.0_162/bin/java" 10 && \
 update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/java8/jdk1.8.0_162/bin/javac" 10 && \
 update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/java8/jdk1.8.0_162/bin/javaws" 10 && \
 update-alternatives --install "/usr/bin/jar" "jar" "/usr/lib/java8/jdk1.8.0_162/bin/jar" 10

#config java
ENV JAVA_HOME=/usr/lib/java8/jdk1.8.0_162
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH=${JAVA_HOME}/bin:$PATH
  • 运行DockerFile生成Images。
# -t 指定什么的Images名称。
# . Dockerfile所在路径,相对路径,绝对路径都可以
cd ~/TestDocker/
docker build -t linduo/unbuntu:16.04 .

# 终端会输出系列命令,最终什么images。
  • 使用该Images
# 查看images
docker images
# 使用该images运行容器
docker run -t -i linduo/unbuntu:16.04 /bin/bash

猜你喜欢

转载自blog.csdn.net/zxc024000/article/details/84646103