系统环境
# 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: .
执行docker_shell.sh
sh docker_shell.sh
查看镜像
# 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