1、加载镜像
将原始镜像包 hml_ubuntu.tar 加载到 docker 镜像列表:
首先,将 hml_ubuntu.tar 上传到服务器,在 hml_ubuntu.tar 所在目录执行:
docker load –i hml_ubuntu.tar
完成后查看 docker 镜像:
docker images
会看到镜像 hml/ubuntu 在列表中
2、编写 Dockerfile
在一个单独目录下,新建 Dockerfile(该文件名必须为此):
$ mkdir images
$ cd images
$ vim Dockerfile
Dockerfile 内容:
# base image FROM hml/ubuntu MAINTAINER hml <hml@huatec.com> # install basic dependencies RUN apt-get update RUN apt-get install -y bzip2 \ libgl1-mesa-glx # install Anaconda3 python3.6 RUN wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh -O ~/anaconda3.sh RUN bash ~/anaconda3.sh -b -p /usr/local/anaconda3 \ && rm ~/anaconda3.sh ENV PATH /usr/local/anaconda3/bin:$PATH # update repo RUN sh -c echo -e "y\n" | conda update conda RUN pip install --upgrade pip # install tensorflow #RUN pip install --upgrade tensorflow RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow # solve import warning RUN pip install --upgrade h5py
3、构建镜像
在 Dockerfile 所在目录下,执行:
docker build -t hml/ubuntu:v2 .
完成后,docker images 可以看到镜像:
4、保存镜像
根据上面的容器保存镜像,执行:docker save –o 归档 tar 文件名 镜像 ID(或镜像 name),此处:
docker save -o hml_ubuntu_v2.tar hml/ubuntu:v2
注: 最好使用镜像 name 代替镜像 ID,如果使用镜像 ID,load 后可能镜像名和 tag 为 Null。
需要较长时间,完成后,在当前目录下会有 hml_ubuntu_v2.tar 文件:
5、使用镜像
将此镜像保存,后面使用可以直接 load:
docker load -i hml_ubuntu_v2.tar
说明:我是根据实际工作情况整理的该过程,核心内容是 Dockerfile 内容,其他部分根据实际需求和应用场景可以不同,如:
- 基础镜像可以是通过
docker pull
直接拉取; - 如果不需要 Tensorflow,可以去掉 Dockerfile 中的 Tensorflow 部分,而只构建 Anaconda;
- 构建镜像的
name、tag
可以自己指定; - 可以直接使用构建好的镜像创建容器服务,而无需先保存镜像;
- 可以通过容器
export
镜像,而不用通过save
这个小伙伴可以啊😊😄👍