Dockerfile
是一个文本格式的配置文件, 用户可以使用
Dockerfile 来快速创建自定义的镜像,另外,使用
Dockerfile
去构建镜像好比使用
pom
去构建
maven
项目一样,有异曲同工之妙
构建基础镜像
centos
alpine
1.
空间大小差异,
alpine
默认
5M
左右,
centos
等都在
200M
左右。
2.
默认软件包差异,
alpine
选用
busybox
,
centos
等则是
bash+coreutils
几件套。
3.
alpine
中,国际化组件被优化掉了。
4.
还有一点,
alpine
中选用的都是
“
最简依赖
”
,这点和
archlinux
比较像,举个例子,
openssh
包不会自带
pam
插件,于是他也就不支持
ldap
。这点我给
alpinelinux
官方提过
issue
。和
php
不一样,
php
可以做成
php-pdo
,
php-dom
的包,然后动态加载共享库。
openssh
不行,
“
没带就是没写
”
。
5.
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
?再对它进行下载