Bash镜像说明
例如:CentOS的Dockerfile中FROM serach
dockerHub上几乎所有的镜像都是通过bash镜像中安装和配置需要的软件构建出来的
构建一个简单的镜像
构建一个centos镜像,并更改镜像时区,设置东八区
默认centos镜像运行容器时区如下
创建Dockerfile
-
创建目录:mkdir -p /root/myCentOS/dockerFile
-
进入创建好的目录:cd /root/myCentOS/dockerFile
-
创建Dockerfile文件:touch Dockerfile
-
编辑Dockerfile:如下
# 基于centos镜像,如果本机没有centos镜像则回去dockerhub上下载此镜像
FROM centos
# 作者
MAINTAINER CodingAnHour
#声明变量
ENV MYPATH /usr/local
# 设置工作目录
WORKDIR $MYPATH
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo ‘Asia/Shanghai’ >/etc/timezone
# 对外暴漏端口 纯提示作用
EXPOSE 80
# 打开一个终端,输出success-------ok
CMD echo $MYPATH
CMD echo “success-------ok”
CMD /bin/bash -
运行Dockerfile:docker build -t mycentos:1.0 .
-
默认情况构建是找当前目录
Dockerfile
文件构建,注意文件名 -
-t:-t让docker分配一个伪终端并绑定到容器的标准输入上
-
.
:注意“.” 表示当前目录 -
如果文件名字非“Dockerfile”,那么运行命令需要使用
-f
指定全路径docker build -t -f /root/myCentOS/dockerFile/DockerFile mycentos:1.0 .
-
-
step共9步:因一共有9个关键字,就会对应有9个步骤,每步都会有一个新的镜像id和容器id
-
运行镜像并进入容器工作目录中查看时间与宿主机时间是否在同一个时区,:docker run -it mycentos:1.0 /bin/bash
-
查看镜像构建历史:docker history 6ef27d686fbb
- 此处id与build中镜像id一一对应
- 此处id与build中镜像id一一对应
-
missing:如上图中显示镜像失踪,是因为Dockerfile中可以有多个CMD命令,但是只有最后一个生效