构建基础镜像有两种方式,第一种是直接去docker官网下载对应镜像(并没有构建),第二种是自己手动构建。
1、一般首先在docker官网寻找自己需要环境的镜像:https://hub.docker.com/search/ 如下图:
此处以g++为例,根据搜索结果查找选择适合自己的镜像,然后点击进去:
然后复制右边的命令,并在本地可联网已装docker的Linux机器上执行,然后docker image ls查看pull下来的镜像,然后执行docker save -o 要保存的文件名 要保存的镜像,注意要保存的文件名大多数情况下是tar包。
2、如果在上述过程中没有找到自己想要的镜像,则可以选择自己写Dockerfile文件自己构建。如我要构建一个centos7.6环境的,有jdk1.8、python3.6.9、g++的镜像,则下载好jdk1.864位Linux的包,然后在本地执行如下:
mkdir Dockerfile && cd Dockerfile && vim Dockerfile
FROM centos:7.6.1810
MAINTAINER Madclear
ADD jdk-8u291-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_181
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
ENV PATH $PATH:/usr/local/python3/bin/
ENV PYTHONIOENCODING utf-8
RUN set -ex \
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
&& curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \
&& yum makecache \
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \
&& yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel tcl gcc gcc-c++ automake autoconf libtool vim net-tools unzip zip make wget \
&& chmod +x /etc/rc.d/rc.local \
&& yum clean all \
&& mkdir /usr/local/python3 \
&& wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz \
&& tar -xvJf Python-3.6.9.tar.xz && rm -f Python-3.6.9.tar.xz \
&& cd Python-3.6.9 \
&& ./configure prefix=/usr/local/python3 \
&& make && make install \
&& cd .. \
&& rm -rf Python-3.6.9
CMD ["/bin/bash"]
然后执行
docker build -t jdkpyg:v1 . && docker image ls
docker save -o jdkpyg.tar jdkpyg