Dockerfile基本结构
Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义镜像。
Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。
Docker分为四部分:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时默认要执行的指令
用阿里云里面的源
例如:
[root@localhost ~]# mkdir nginx
[root@localhost ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg nginx Public Videos
Desktop Downloads Music Pictures Templates
[root@localhost ~]# cd nginx/
[root@localhost nginx]# touch Dockerfile
[root@localhost nginx]# ls
Dockerfile
[root@localhost nginx]# vim Dockerfile
FROM ubuntu # 第一行必须指定基于的基础镜像
LABEL MANTAINER "ltt 910669083@qq.com" # 维护者信息
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list && \
apt-get update && apt-get -y install nginx && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf # 镜像操作指令
CMD /usr/sbin/nginx # 容器启动时默认要执行的指令
其中,一开始必须指明所基于的镜像名称,接下来一般会说明维护者信息。
后面则是镜像操作指令,例如RUN指令,RUN指令将对镜像执行跟随的命令。每运行一条RUN指令,镜像添加新的一层,并提交。
最后是CMD指令来指定运行容器时的操作指令。
创建镜像
编写完成Dockerfile后,可以通过docker build命令来创建镜像。
基本的格式为docker build [选项] 路径,该命令将读取指定路径下(包括子目录)的Dockerfile,并将该路径下所有内容发送给Docker服务端,由服务端来创建镜像。因此一般建议放置Dockerfile的目录为空目录。
另外,可以通过 .dockerignore 文件(每一行添加一条匹配模式)来让Docker忽略路径下的目录和文件。
要指定镜像的标签信息,可以通过-t选项。
例如,指定Dockerfile所在路径为/tmp/docker_builder/,并且希望生成镜像标签为build_repo/first_image,可以使用下面的命令:
docker build -t build_repo/first_image /tmp/docker_builder/
[root@localhost nginx]# docker build -t nginx:v0.1 .
Successfully built b71716b4dc0f
Successfully tagged nginx:v0.1 //看到这个代表成功了
[root@localhost nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v0.1 b71716b4dc0f About a minute ago 227MB
nginx latest 605c77e624dd 4 months ago 141MB
httpd latest dabbfbe0c57b 4 months ago 144MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
指令
指令的一般格式为INSTRUCTION arguments(指令加参数),指令包括:
- FROM(基础镜像的来源)