自动化镜像
dockerfile
使用dockerfile可以自动化的创建docker镜像
-
docker 命令:
docker images -a:显示所有镜像,包括失败的镜像 docker image prune:清除失败的镜像缓存 docker image prune -a:清除所有未被容器使用的镜像;极度危险!!!
-
语法:
FROM 要使用的基础镜像 RUN 构建镜像时要执行的操作 CMD 运行镜像时,默认执行的命令 ADD 宿主机的文件添加到到容器中,tar包可自动解压 MAINTAINER 指定维护者信息 LABEL 描述,标签 WORKDIR 指定工作目录,设定后,进入容器默认是在这个目录下 VOLUME 设置卷,使用卷可以将容器中的目录内容持久化,卷路径在/var/lib/docker/volumes/;写绝对路径可以挂载宿主机目录至容器目录 EXPOSE 可指定容器开放的端口,可启动容器时随机端口挂载到开放的端口 COPY 复制宿主机的文件到容器中 ENV 可设定环境变量,设定的变量可以在dockerfile中引用,而且会继承到容器中 ENTRYPOINT 容器启动执行的命令,无法被替换,写在启动命令位置的字符串会被当成命令的参数
-
例:
- 创建一个基础镜像:
FROM scratch ADD alpine.tar.gz / CMD ["/bin/sh"]
- 创建一个nginx 环境镜像
FROM alpine:3.9 RUN sed -i 's/dl-cdn.alpinelinux.org/ mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \ apk update && \ apk add nginx && \ mkdir -p /run/nginx/ CMD ["nginx","-g","daemon off;"]
- 创建一个可道云的容器
FROM alpine:3.9 MAINTAINER YMC LABEL maintainer="alpine nginx" RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \ apk update && \ apk add nginx php7-intl php7-openssl php7-pdo_mysql php7-common php7-fpm php7-mysqlnd php7-mbstring php7-opcache php7-session php7-gd php7-json php7 php7-iconv php7-curl php7-pecl-igbinary php7-pecl-memcached php7-pdo php7-mysqli WORKDIR /code ADD www.conf /etc/php7/php-fpm.d/www.conf ADD default.conf /etc/nginx/conf.d/default.conf ADD code /code ADD init.sh /init.sh EXPOSE 80/tcp RUN mkdir -p /run/nginx RUN chown -R nginx:nginx /code ENTRYPOINT ["/bin/sh","/init.sh"]
- 创建一个基础镜像: