Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使用 Dockerfile 去构建镜像好比使用 pom 去构建 maven 项目一样,有异曲同工之妙
构建基础镜像
centos
alpine
- 空间大小差异, alpine 默认 5M 左右, centos 等都在 200M 左右。
- 默认软件包差异, alpine 选用 busybox , centos 等则是 bash+coreutils 几件套。
- alpine 中,国际化组件被优化掉了。
- 还有一点, alpine 中选用的都是 " 最简依赖 " ,这点和 archlinux 比较像,举个例子,
openssh 包不会自带 pam 插件,于是他也就不支持 ldap 。这点我给 alpinelinux 官方提过
issue 。和 php 不一样, php 可以做成 php-pdo , php-dom 的包,然后动态加载共享库。
openssh 不行, " 没带就是没写 " 。 - glibc 差异, alpine 选用 musl , centos 等选用 glibc ,其他的倒还好, libc 的差异对开发很重
要。
基本结构
Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。
一般的, Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
准备工作
创建文件夹上传 jdk 的安装包 , 和在同级目录下编写 Dockerfile 文件
编写 Dockerfile 文件
FROM centos
MAINTAINER (邮箱名称)
WORKDIR /test
COPY spring.jar /test
ADD jdk-8u221-linux-x64.tar.gz /test
ENV JAVA_HOME=/test/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
CMD java -jar spring.jar
如果仅仅是把本地的文件拷贝到容器镜像中, COPY 命令是最合适不过的。其命令的格式
为: COPY <src> <dest>
ADD 命令的格式和 COPY 命令相同,也是: ADD <src> <dest>
区别: ADD 解压压缩文件并把它们添加到镜像中
创建镜像
编写完成 Dockerfile 之后,可以通过 docker build 命令来创建镜像。
注 1 : -t spring:v1 给新构建的镜像取名为 v1
注 2 :注意最后有个点,代表使用当前路径的 Dockerfile 进行构建
然后直接运行查看一下
镜像的上传
首先登录阿里云控制台搜索容器镜像服务ACR,选择个人版
先创建一个命名空间
再进行一个登录 先对镜像取个别名,再将想要推送的镜像换成阿里云的镜像
最后到阿里云查看我们的镜像
镜像的下载
首先删除原有的镜像
docker rmi registry.cn-hangzhou.aliyuncs.com/4502/order_service:v1
再对它进行下载