系统环境

# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

编写Dockerfile文件

FROM centos:7.2.1511
# 作者标签,联系方式
LABEL maintainer "wtf@datagrand.com"
# 环境变量硬编码及时区
ENV ENVIRONMENT production
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# yum 基础工具,记住clean
RUN yum clean all \
    && yum makecache \
    && yum install -y wget gcc gcc-c++ python-devel bzip2 \
    && yum clean all
COPY docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm /usr/local/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
ADD docker.txt  /tmp/docker.txt
# docker 基础工具及版本
RUN cd /usr/local \
    && yum install -y docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
# 镜像启动命令 
CMD ["systemctl","start","docker"]

文件目录路径

# pwd    
/root/dockerfile
# 说明:上面是当前文件路径,目录内容如下:
# ls
docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm 
docker.txt
Dockerfile
docker_shell.sh
# docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm、Dockerfile、docker_shell.sh,docker.txt在同一个目录下!
# docker.txt的内容:
# cat docker.txt
this is a test

编写脚本docker_shell.sh

# cat docker_shell.sh
TIMENOW=`date +%y.%m.%d.%H%M`
# -f 指定文件 , -t 指定生成镜像名称 , 冒号后为版本号 , 例子 : ##docker_image:17.08.01.1311
docker build -f Dockerfile -t docker_image:${TIMENOW} .

执行docker_shell.sh

sh docker_shell.sh

docker镜像制作、压缩及镜像加载

查看镜像

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker_image        18.01.14.1702       d227774c2960        23 minutes ago      588MB

镜像压缩与打包

docker save d227774c2960 |gzip>docker_file.tgz
# ls
docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm 
docker_file.tgz 
docker.txt
Dockerfile
docker_shell.sh

镜像导入

# 把docker里原有docker_image镜像删除,导入压缩打包后的镜像
docker rmi d227774c2960
docker images|grep docker_image
docker load < docker_file.tgz 
docker tag  d227774c296x docker_image:18.01.14.1702 
# 说明:d227774c296x是docker load < docker_file.tgz 加载镜像生成的ID号!

启动镜像

# 镜像名字是wtf_shiyan
docker run -itd --name=wtf_shiyan 34b5ef62c921
docker exec -it wtf_shiyan /bin/bash