dockerfile是一个文本文件,其中包含了若干指令,指令描述了构建镜像的细节
dockerfile通过文件的形式来生成镜像
先把操作系统的镜像做出来,其他的依赖操作系统的镜像来做叫做镜像的分层
或者 apt-get upgrade | 'bin/echo' -e "\ny\n"
如果有[y,d,N]出现可以直接加 -y即可跳过
脚本的话
比如我们用sh Anaconda3-4.4.0-Linux-x86_64.sh来安装anaconda的时anaconda会问四个问题,我的回答顺序分别是Enter,yes,Enter,yes。于是你可以这样写:
RUN sh -c '/bin/echo -e "\nyes\n\nyes" | sh Anaconda3-4.4.0-Linux-x86_64.sh'
Dockerfile常用指令
1、FROM 依赖的基础镜像文件,必须是第一条指令
2、MAINTAINER wwn 作者
3、RUN 构建镜像过程中执行linux命令 写多个run不如写在一行里,会节省空间
4、ADD 添加文件,从src目录复制文件到容器的dest,其中src可以是dockerfile所在目录的相对路径,也可以是url,还可以是一个压缩包(自动解压)宿主机的文件复制到容器路径里去
5、COPY 拷贝文件,但不支持url和压缩包解压
6、EXPOSE 声明容器在运行时对外提供的服务端口,就是可以暴露出的端口号
7、WORKDIR 指定容器的工作目录
8、ENV 添加环境变量可添加多行,容器启动后生成的环境变量
9、ARG 在镜像构建过程中生成的环境变量,一旦镜像构建成功,环境变量失效
10、USER 指定容器的启动用户
11、VOLUME 指定挂载点,使容器中一个目录具有持久化的功能,可以被自身使用也可以给别人用,通常不会用
12、CMD 容器启动后执行的命令,可以指定多次但只有最后一次有效,如果cmd和entrpoint同时出现,cmd会成为entrypoint的参数
13、ENTRYPOINT:容器启动后执行的命令,可以指定多次但只有最后一次有效
docker bulid
docker build -t "www.wangwennuo.com/system/centos7:v1" (指定名称) .
- --build-arg=[] :
设置镜像创建时的变量;
- --cpu-shares :
设置 cpu 使用权重;
- --cpu-period :
限制 CPU CFS周期; 限制 CPU CFS配额; 指定使用的CPU id;
--cpu-quota --cpuset-cpus : --cpuset-mems :
指定使用的内存 id;
- --disable-content-trust :
忽略校验,默认开启;
- -f :
指定要使用的Dockerfile路径;
- --force-rm :
设置镜像过程中删除中间容器;
- --isolation :
使用容器隔离技术;
- --label=[] :
设置镜像使用的元数据;
- -m :
设置内存最大值;
- --memory-swap :
设置Swap的最大值为内存+swap,"-1"表示不限swap;
- --no-cache :
创建镜像的过程不使用缓存;
- --pull :
尝试去更新镜像的新版本;
- --quiet, -q :
安静模式,成功后只输出镜像 ID;
- --rm :
设置镜像成功后删除中间容器;
- --shm-size :
设置/dev/shm的大小,默认值是64M;
- --ulimit :
Ulimit配置。
- --squash :
将 Dockerfile 中所有的操作压缩为一层。
- --tag, -t:
镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network:
默认 default。在构建期间设置RUN指令的网络模式